Ok, I know that FrameworkElement
, which is a direct subclass of UIElement
, has a Parent
property, but Panel
objects have children of type UIElement
, not FrameworkElement
(The Children
property is of type UIElementCollection
) which seems it would mean you can add UIElement
s directly to a Panel
.
That said, if you have a UIElement
and want to see if it has a parent that's a panel, the only way I know how to test this is with the VisualTreeHelper
, but that's the visual tree, not the logical tree. (At least we know a panel doesn't have a template so maybe that's the way, but still...)
So asides from the VisualTreeHelper
, how can you determine which panel (if any) is the parent of a UIElement
? (...and have any thoughts why they didn't just define a Parent property there instead of on FrameworkElement
?)
Thanks!
Well, if you need to find a logical parent you can just use
LogicalTreeHelper
in the same manner asVisualTreeHelper
.As for "...and have any thoughts why they didn't just define a Parent property there instead of on
FrameworkElement
?". Basically, the notion of "Logical Tree" is introduced on theFrameworkElement
level. See http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.aspx (see Remarks) for details of whatFrameworkElement
adds toUIElement
. Here is what it says about Logical Trees: