【问题标题】:WPF. Nested modal dialogsWPF。嵌套模式对话框
【发布时间】:2021-03-22 04:31:30
【问题描述】:

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

主窗口按钮处理程序

 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


    【解决方案1】:

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

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

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

    【讨论】:

    • 最后我以您的解决方案结束,尽管这很奇怪 - ShowDialog 在 WPF 中的工作方式与在 Windows 窗体中的工作方式不同。 Windows 窗体允许我按照预期的方式嵌套模式对话框
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多