好的,我知道FrameworkElementUIElement的直接子类,它具有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/

10-11 08:37