使 WPF 中的新对话框窗口居中

本文关键字:窗口 对话框 WPF | 更新日期: 2023-09-27 18:32:11

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

        NewDialog dlg = new NewDialog();
        dlg.WindowStartupLocation = WindowStartupLocation.CenterOwner;
        dlg.ShowDialog();

问题是所有者似乎不是调用窗口(可能是因为用户控件正在进行调用而不是实际窗口? 所以我尝试添加这个...

        dlg.Owner = Application.Current.Windows[0];

这主要有效,但它不是一个通用的解决方案,因为有时我的新窗口必须调用一个新窗口,我希望它们以调用窗口为中心,而不是主窗口。 有没有更好的方法可以将所有者正确设置为用户控件所属的窗口? 我尝试了许多变体,这些变体似乎都有一些怪癖,即窗口出现在完全不同的位置,或者某些东西评估不正确并抛出错误。

有什么建议吗?

使 WPF 中的新对话框窗口居中

如果

this不是Window类型,请使用静态 Window.GetWindow 方法来获取主机窗口。

dlg.Owner = Window.GetWindow(this);