好的,我知道FrameworkElement
是UIElement
的直接子类,它有一个Parent属性,但是Panels的子类型为UIElement
,而不是FrameworkElement
(儿童的类型为UIElementCollection
},这似乎意味着您可以将UIElement
直接添加到Panel。
那就是说,如果你有一个UIElement
并想看看它是否有一个父级是一个小组,我知道如何测试这个的唯一方法就是使用VisualTreeHelper
,但这就是视觉树,而不是逻辑树。 (至少我们知道Panel没有模板,所以也许就是这样,但仍然......)
除VisualTreeHelper
之外,是否有人知道如何知道哪个面板是UIElement
的父级? (...并且有任何想法为什么他们不仅仅在那里定义一个Parent属性而不是FrameworkElement
?)
谢谢!
答案 0 :(得分:7)
好吧,如果你需要找到一个逻辑父母,你可以像LogicalTreeHelper
一样使用VisualTreeHelper
。
至于“......并且有任何想法为什么他们不仅仅在那里定义一个Parent属性而不是FrameworkElement
?”。基本上,“逻辑树”的概念是在FrameworkElement
级别引入的。有关FrameworkElement
添加到UIElement
的详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.aspx(请参阅备注)。以下是关于逻辑树的说法:
逻辑树:一般WPF 编程模型经常被表达 在作为元素树。 支持表达树 元素作为逻辑树,和 随之支持定义 标记中的树是在 FrameworkElement级别。但请注意 那个FrameworkElement故意 没有定义内容模型,和 让责任归于此 类。有关更多信息,请参阅 Trees in WPF