首页 > 解决方案 > WPF。嵌套模式对话框

问题描述

我在 WPF 应用程序中有几个窗口(MainWindow、Window1、Window2)每个窗口都有一个按钮,用于在模态模式下显示下一个窗口(MainWindow -> Window1 -> Window2)。就像是:

MainWindow 按钮处理程序

 Visibility = Visibility.Hidden;
 Window1 w = new Window1();
 w.ShowDialog();
 Visibility = Visibility.Visible;

Window1 按钮处理程序

 Visibility = Visibility.Hidden;
 Window2 w = new Window2();
 w.ShowDialog();
 Visibility = Visibility.Visible;

问题是 - 当 Window2 关闭时(Alt + F4),不仅 Window1 结束了它的“w.ShowDialog()”方法调用,而且 MainWindow 也结束了!当 Window2 关闭时 - 两个窗口(Window1 + MainWindow)同时变为可见!

为什么 MainWindow 变得可见,我该怎么做才能避免这种情况?

先感谢您!

标签: wpf

解决方案


如果隐藏窗口,您不妨使用该Show()方法并处理Closed事件,而不是调用ShowDialog()

Visibility = Visibility.Hidden;
Window1 w = new Window1();
w.Closed += (ss, ee) => Visibility = Visibility.Visible;
w.Show();

这应该可以解决您的问题。


推荐阅读