This question already has an answer here:
-
WPF User Control Parent
14 answers
Within my custom WPF control I want to get a containing Window or Page. Window.GetWindow() method works fine when control is in a windowed app but when it's in the XBAP app in a browser it returns browser window instead of the page.
Is there any other way to do this?
This works for me:
Window parentWindow = Window.GetWindow(this);
var parent = VisualTreeHelper.GetParent(this);
while (!(parent is Page))
{
parent = VisualTreeHelper.GetParent(parent);
}
(parent as Page).DoStuff();
You can use the VisualTreeHelper class to retrieve the top-level control :
DependencyObject GetTopLevelControl(DependencyObject control)
{
DependencyObject tmp = control;
DependencyObject parent = null;
while((tmp = VisualTreeHelper.GetParent(tmp)) != null)
{
parent = tmp;
}
return parent;
}
i think best way is
var obj = VisualTreeHelper.GetParent((DependencyObject)Content);