【问题标题】:Truly modal window possible?真正的模态窗口可能吗?
【发布时间】:2009-07-17 19:58:03
【问题描述】:

或者我是否必须做一些事情,比如创建一个 Windows 窗体并在其中托管 xaml?尽量保持一致的外观和感觉。如果我只能做后者,我该如何实现?

【问题讨论】:

    标签: c# wpf xaml dialog modal-dialog


    【解决方案1】:

    这应该是你想要的:

    var window = new MyWindow();
    var helper = new WindowInteropHelper(window);
    helper.Owner = this.Handle;
    window.ShowDialog();
    

    这是确保最小化/恢复时正确行为的关键。有关该方法的更多信息,请参阅this blog post

    (如果这不是您所需要的,也许您可​​以定义“真正的模态”。)

    【讨论】:

    • 这与设置 Window 的 Owner 属性本身有不同的效果吗? Window.Owner 接受另一个 Window 而不是句柄。
    • @YotaXP:是的,它会,因为它使当前窗口成为实际的 Win32 所有者,而不仅仅是 WPF 窗口。阅读博文的结尾部分了解更多信息。
    • 我应该提到它是从 WPF 窗口打开的。我犯了一个错误,因为 ShowDialog 没有出现在智能感知中,所以它不可用。奇怪的是,我无法使用辅助屏幕上的对话框最小化父窗口,但我将其归结为 DisplayFusion,它与我系统上的 WPF 应用程序的行为很奇怪。谢谢。
    【解决方案2】:

    您可以创建custom dialog boxes,它们是模态的。您可以在其中托管 WPF Window 并将按钮定义为模式关闭按钮。这似乎是做模态窗口的最佳方式,IMO。

    【讨论】:

    • +1 用于实现模态对话框不仅仅是当今网络世界通常所指的无边界弹出窗口。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多