以下代码演示了我在关闭子窗口时会最小化父窗口的问题,这是我不希望发生的。
class SomeDialog : Window
{
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new CustomMessageBox().ShowDialog();
}
}
class CustomMessageBox : Window
{
public CustomMessageBox()
{
Owner = Application.Current.MainWindow;
}
}
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new SomeDialog() { Owner = this }.Show();
}
}
Window1 是主应用程序窗口。
SomeDialog 是一个窗口,它在 Window1 中的某个事件上弹出(在示例中双击 window1),它需要是无模式的。
CustomMessageBox 是一个窗口,它会在“SomeDialog”中的某个事件上弹出(在示例中双击 SomeDialog),该事件需要是modal。
如果运行应用程序,然后双击 Window1 的内容以调出 SomeDialog,然后双击 SomeDialog 的内容以调出 CustomMessagebox。
现在关闭 CustomMessagebox。美好的。
现在如果你关闭 SomeDialog,Window1 会最小化吗?为什么它会最小化,我该如何阻止它?
编辑:看起来解决方法相当简单,使用 Viv 建议的技术。
class SomeDialog : Window
{
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new CustomMessageBox().ShowDialog();
}
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
base.OnClosing(e);
Owner = null;
}
}