我目前有这行代码,我想在所有情况下都可以使用:
var visualWindowContent = (UIElement)window.Content;
当 Window.Content 是 UIElement 时,此方法将起作用。但是,当它是一个非可视对象,然后应用了一个 DataTemplate 时呢?上面的代码行会抛出一个错误的强制转换异常。那么在这种情况下如何获取窗口的视觉内容呢?
编辑:起初我说 VisualTreeHelper.GetChild(window, 0) 返回 null,但它实际上是非 null。我的目的是通过将 visualWindowContent 传递给 AdornerLayer.GetAdornerLayer 来获取根装饰层。事实证明,当传递窗口的直接可视子节点时失败(返回 null),因为该节点在可视树中不够深,即 AdornerDectorator 的后代。