好的,我知道FrameworkElement
是UIElement
的直接子类,它具有Parent属性,但是Panel的子级类型为UIElement
,而不是FrameworkElement
(子级类型为UIElementCollection
),这似乎意味着您可以直接将UIElement
s添加到控制板。
就是说,如果您有一个UIElement
并想查看它是否有一个父面板,那么我知道如何测试它的唯一方法是VisualTreeHelper
,但这是可视树,而不是逻辑树。 (至少我们知道Panel没有模板,所以也许是这样,但是仍然...)
那么从VisualTreeHelper
来看,有人知道如何知道UIElement
的父面板吗? (...还有任何想法,为什么他们不只是在那里定义一个Parent属性,而不是在FrameworkElement
上定义?)
谢谢!
最佳答案
好吧,如果您需要找到一个逻辑上的 parent ,您可以按照与LogicalTreeHelper
相同的方式使用VisualTreeHelper
。
至于“...还有什么想法,为什么他们不只是在那里而不是FrameworkElement
上定义Parent属性?”。基本上,在FrameworkElement
级别上引入了“逻辑树”的概念。有关FrameworkElement
添加到UIElement
的详细信息,请参见http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.aspx(请参阅备注)。这是有关逻辑树的内容:
关于wpf - 如何获得UIElement的父级?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5000228/