你怎么能得到UIElement的父母?

Mar*_*eIV 8 wpf children panel parent uielement

好吧,我知道FrameworkElement,它是一个直接的子类UIElement,有一个Parent属性,但是Panels有类型的子类UIElement,而不是FrameworkElement(Children类型UIElementCollection),这似乎意味着你可以UIElement直接添加到Panel.

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

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

谢谢!

Pav*_*kov 7

好吧,如果你要找到你可以只使用一个逻辑父LogicalTreeHelper在相同的方式VisualTreeHelper.

至于"......并且有任何想法为什么他们不仅仅在那里定义一个Parent属性而不是在FrameworkElement?".基本上,在这个FrameworkElement层面上引入了"逻辑树"的概念.有关添加内容的详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.aspx(请参阅"备注").这是关于逻辑树的说法:FrameworkElementUIElement

逻辑树:通用WPF编程模型通常以元素树的形式表示.支持将元素树表示为逻辑树,并支持在标记中定义该树,这是在FrameworkElement级别实现的.但请注意,FrameworkElement故意不定义内容模型,并将该责任留给派生类.有关更多信息,请参阅 WPF中的树.