【发布时间】:2015-07-11 15:37:18
【问题描述】:
可以在 Visual Studio 设计器中或使用代码将单个窗口置于最顶层,但是有没有办法用代码一次将每个窗口置于最顶层?
我遇到的问题是,仅将主父窗口设为最顶层会隐藏任何其他窗口,所以显然我需要将它们全部设为最顶层,还是我错了?
【问题讨论】:
可以在 Visual Studio 设计器中或使用代码将单个窗口置于最顶层,但是有没有办法用代码一次将每个窗口置于最顶层?
我遇到的问题是,仅将主父窗口设为最顶层会隐藏任何其他窗口,所以显然我需要将它们全部设为最顶层,还是我错了?
【问题讨论】:
在 MainWindow 上设置 TopMost 属性。
然后在创建任何其他子窗口/对话框时,将 MainWindow 属性传递给显示对话框方法。这会将子窗口设置为模式对话框。这意味着它将始终出现在主窗口上方。
public void ShowModelDialog()
{
MyDialog d = new MyDialog();
d.ShowDialog(this);
}
【讨论】:
ShowDialog()。还是谢谢!
首先必须在创建实例时指定窗口的所有者。
以下示例显示了新窗口如何在显示之前先设置所有者。
MyWindow _MyWindow = new MyWindow() { Owner = Application.Current.MainWindow };
注意:被设置为所有者的窗口必须已经显示,否则您可能会得到 XamlParseException 或 InvalidOperationException。
其次你只需要使用_MyWindow.ShowDialog()来显示窗口。
这可以防止所有者窗口在所拥有的窗口之上移动,即使它被设置为在子窗口显示之后的最顶层。
【讨论】: