所以我在一个窗口中有一个用户控件,当单击一个按钮时会创建一个新的对话框窗口。我希望窗口显示在窗口顶部调用它。我试着这样做......
NewDialog dlg = new NewDialog();
dlg.WindowStartupLocation = WindowStartupLocation.CenterOwner;
dlg.ShowDialog();
问题是所有者似乎不是调用窗口(可能是因为用户控件正在进行调用而不是实际窗口?)。所以我尝试添加这个......
dlg.Owner = Application.Current.Windows[0];
这主要是有效的,但它不是通用的解决方案,因为有时我的新窗口必须调用一个新窗口,我希望它们以调用窗口为中心,而不是主窗口。有没有更好的方法将所有者正确设置到用户控制它是一部分的窗口?我尝试了许多变体,似乎都有一些怪癖,窗口出现在一个完全不同的地方,或者某些东西没有正确评估并抛出错误。
有什么建议吗?
答案 0 :(得分:4)
如果this
不是Window
类型,请使用静态Window.GetWindow Method来获取主机窗口。
dlg.Owner = Window.GetWindow(this);