你怎么能得到UIElement的父母?

时间:2011-02-15 05:34:04

标签: wpf panel parent children uielement

好的,我知道FrameworkElementUIElement的直接子类,它有一个Parent属性,但是Panels的子类型为UIElement,而不是FrameworkElement(儿童的类型为UIElementCollection},这似乎意味着您可以将UIElement直接添加到Panel。

那就是说,如果你有一个UIElement并想看看它是否有一个父级是一个小组,我知道如何测试这个的唯一方法就是使用VisualTreeHelper,但这就是视觉树,而不是逻辑树。 (至少我们知道Panel没有模板,所以也许就是这样,但仍然......)

VisualTreeHelper之外,是否有人知道如何知道哪个面板是UIElement的父级? (...并且有任何想法为什么他们不仅仅在那里定义一个Parent属性而不是FrameworkElement?)

谢谢!

1 个答案:

答案 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