34

カスタム WPF コントロール内で、含まれている Window または Page を取得したいと考えています。Window.GetWindow() メソッドは、コントロールがウィンドウ アプリにある場合は正常に動作しますが、ブラウザーの XBAP アプリにある場合は、ページではなくブラウザー ウィンドウを返します。

これを行う他の方法はありますか?

4

4 に答える 4

83

これは私のために働く:

Window parentWindow = Window.GetWindow(this);
于 2013-05-01T20:27:50.970 に答える
30
var parent = VisualTreeHelper.GetParent(this);
while (!(parent is Page))
{
    parent = VisualTreeHelper.GetParent(parent);
}
(parent as Page).DoStuff();
于 2010-08-11T21:52:23.407 に答える
7

VisualTreeHelper クラスを使用して、最上位のコントロールを取得できます。

DependencyObject GetTopLevelControl(DependencyObject control)
{
    DependencyObject tmp = control;
    DependencyObject parent = null;
    while((tmp = VisualTreeHelper.GetParent(tmp)) != null)
    {
        parent = tmp;
    }
    return parent;
}
于 2009-05-08T13:58:38.750 に答える