【问题标题】:Centering new dialog window in WPF在 WPF 中居中新对话框窗口
【发布时间】:2012-04-23 20:49:01
【问题描述】:

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

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

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

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

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

有什么建议吗?

【问题讨论】:

  • ^-- 抛出编译错误,无法将用户控件类型转换为'window'

标签: c# wpf dialog window


【解决方案1】:

如果this 不是Window 类型,则使用静态Window.GetWindow Method 获取主机窗口。

dlg.Owner = Window.GetWindow(this);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2017-08-17
    • 2010-12-05
    • 2011-09-11
    相关资源
    最近更新 更多