I'd love to see a method in VisualTreeHelper that would recurse through the
parents and find the first one of the type I passed in.
In my specific scenario, I want to retireve the parent TreeViewItem of a
checkbox, which is inside a stackpanel, and I don't like doing
sender.Parent.Parent (with all the proper casts) since that ties my UI to my
code-behind.
Here's the code I came with, if anyone wants it:
static TObject FindVisualParent<TObject>(UIElement child)
where TObject : UIElement
{
if (child == null)
{
return null;
}
UIElement parent = VisualTreeHelper.GetParent(child) as UIElement;
while (parent != null)
{
TObject found = parent as TObject;
if (found != null)
{
return found;
}
else
{
parent = VisualTreeHelper.GetParent(parent) as UIElement;
}
}
return null;
}


