在我的WPF应用程序中,我有一个普通的MainWindow
设置按钮。
单击“设置”按钮后,我想要一个单独的“设置”窗口来打开模态。
public partial class MainWindow : Window
{
//...
// On Settings button click ...
var settingsWindow = new SettingsWindow();
settingsWindow.Owner = this;
settingsWindow.ShowDialog();
}
尽管事实上,SettingsWindow
不仅仅是一个小的“Okay / Cancel”对话框,我希望它是模态的(所以我使用ShowDialog()
),因为一些配置需要是在申请流程继续之前完成。所以SettingsWindow
是一个带有最小/最大/关闭按钮的普通窗口。
如果用户最小化SettingsWindow
,MainWindow
不仅应该被推到后台,而且应该最小化。通过这样做可以正常工作:
public partial class SettingsWindow : Window
{
// ...
protected override void OnStateChanged(EventArgs e)
{
base.OnStateChanged(e);
if (WindowState == WindowState.Minimized && Owner != null)
{
Owner.WindowState = WindowState.Minimized;
}
if (WindowState == WindowState.Normal && Owner != null)
{
Owner.WindowState = WindowState.Normal;
}
}
}
当SettingsWindow
和MainWindow
最小化时,我可以通过在图标上单击鼠标将它们恢复到Normal WindowState,但我无法通过使用“Alt + Tab”实现此目的因为该列表中的应用程序消失了。在“Win-Key + Tab”列表中,应用程序仍然存在。
是否有可能将应用程序保留在“Alt + Tab”列表中? SettingsWindow.WindowStyle
为SingleBorderWindow
,因此没有ToolWindow
。
我知道,这个问题类似于this,但目标有点不同。