C# 在WPF中居中新对话框窗口

C# 在WPF中居中新对话框窗口,c#,wpf,dialog,window,C#,Wpf,Dialog,Window,因此,我在一个窗口中有一个用户控件,当单击按钮时,它会创建一个新的对话框窗口。我希望窗口出现在调用它的窗口顶部。我试着这么做 NewDialog dlg = new NewDialog(); dlg.WindowStartupLocation = WindowStartupLocation.CenterOwner; dlg.ShowDialog(); 问题是所有者似乎不是调用窗口(可能是因为用户控件正在进行调用,而不是实际的窗口?)。所以我试着加

因此,我在一个窗口中有一个用户控件,当单击按钮时,它会创建一个新的对话框窗口。我希望窗口出现在调用它的窗口顶部。我试着这么做

        NewDialog dlg = new NewDialog();
        dlg.WindowStartupLocation = WindowStartupLocation.CenterOwner;
        dlg.ShowDialog();
问题是所有者似乎不是调用窗口(可能是因为用户控件正在进行调用,而不是实际的窗口?)。所以我试着加上这个

        dlg.Owner = Application.Current.Windows[0];
这基本上是可行的,但它不是一个通用的解决方案,因为有时我的新窗口必须调用一个新窗口,我希望它们集中在调用窗口上,而不是主窗口上。是否有更好的方法将所有者正确设置为用户控件所属的窗口?我尝试过许多变体,它们似乎都有一些怪癖,比如窗口出现在完全不同的位置,或者某些东西评估不正确并抛出错误


有什么建议吗?

如果
不是
窗口类型
请使用static获取主机窗口

dlg.Owner = Window.GetWindow(this);

如果
不是
窗口
类型,请使用static获取主机窗口

dlg.Owner = Window.GetWindow(this);
^--引发编译器错误,无法将用户控件类型转换为“窗口”^--引发编译器错误,无法将用户控件类型转换为“窗口”