以编程方式使所有 wpf 项目 windows 最顶层

Make all wpf project windows topmost programmatically

可以在 Visual Studio 设计器中或使用代码将个人 windows 设置为最顶层,但是有没有办法使用代码同时将每个 window 设置为最顶层?

我遇到的问题是,仅将主要父项 window 设为最顶层会隐藏任何其他 windows,因此显然我需要将它们全部设为最顶层,还是我错了?

在主窗口上设置 TopMost 属性。

然后在创建任何其他子项时 Windows/Dialog 将 MainWindow 属性 传递到显示对话框方法中。这会将子 window 设置为模式对话框。这意味着它将始终出现在主 window 之上。

public void ShowModelDialog()
{
  MyDialog d = new MyDialog();

  d.ShowDialog(this);
}

See here for more info

首先创建实例时必须指定window的所有者。

以下示例显示了新的 window 如何在显示之前先设置所有者。 MyWindow _MyWindow = new MyWindow() { Owner = Application.Current.MainWindow };

注意:设置为所有者的 window 必须已经显示,否则您可能会得到 XamlParseExceptionInvalidOperationException

其次你只需要使用_MyWindow.ShowDialog()来显示window。 这可以防止所有者 window 移动到拥有的 window 之上,即使它被设置为最顶层 after the child window已显示。