【问题标题】:Is it possible to have two or more active modal windows at the same time?是否可以同时拥有两个或多个活动模式窗口?
【发布时间】:2019-04-30 20:00:12
【问题描述】:

我正在处理我的应用程序中的反馈表。它还有一些窗口,必须是模态的。问题是用户无法打开反馈表单,而其中一个模式窗口已打开。那么有没有什么办法可以让反馈表单成为模态的,并且可以在其他模态窗口中打开和使用呢?

【问题讨论】:

  • 如果你有多个,它们不是模态窗口。
  • 我的意思是,有一些功能:过滤,排序等......并且它们中的每一个都由模态窗口呈现。而且我希望能够打开另一个模式窗口。 @Aron
  • 如果有两个,则不是模态对话框。模态对话框将控制和焦点从所有其他对话框中移开。因此只能有一个。

标签: c# wpf


【解决方案1】:

是的,前提是您一次只能激活一个:

    public MainWindow()
    {
        InitializeComponent();

        this.Loaded += (s1, e1) =>
        {
            var window1 = new Window();
            window1.Owner = this;
            window1.Content = new TextBlock { Text = "This is modal window 1" };

            window1.Loaded += (s2, e2) =>
            {
                var window2 = new Window();
                window2.Owner = window1;
                window2.Content = new TextBlock { Text = "This is modal window 2" };
                window2.ShowDialog();
            };

            window1.ShowDialog();
        };
    }
}

这个特定的代码有点乱,只是为了证明可以做到。如果您想要一个更强大的示例,请查看my article on implementing dialog boxes in MVVM

也可以将window2.Owner 设置为this 并同时获得两个活动模式对话框,但这意味着您必须依靠alt-tab 或编程控制在它们之间切换。这几乎肯定不是您想要的行为,但在极少数情况下您想要这样做也是可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    相关资源
    最近更新 更多