【问题标题】:How To Make WPF ShowDialog() Block Parent Window如何使 WPF ShowDialog() 阻止父窗口
【发布时间】:2015-05-29 11:03:45
【问题描述】:

WPF 4.5

我有一个应用程序,我通过实例化从应用程序的主窗口显示模态窗口,将其所有者设置为主窗口,然后调用 ShowDialog()。模态窗口具有“Topmost=true”。主窗口没有。

当我运行我的应用程序时,模态窗口显示在主窗口的前面,并且正如预期的那样保持在主窗口的前面。但是,我可以简单地单击模态窗口后面的主窗口来激活主窗口并对其进行操作...我什至可以关闭它!

以我的拙见,这绝对不是具有模态窗口的应用程序所期望的行为。我对 WPF 以这种方式处理它的原因感到困惑。更重要的是,我需要一个解决方案,将模态窗口保持在前面,同时阻止对其后面的主窗口的访问(这不应该是模态窗口的基本功能吗?)

我相信这种期望的行为一直是在 WinForms 中使用 ShowDialog 时的默认行为(回到过去。)我在这里缺少什么,我怎样才能让它与 WPF 一起工作?

【问题讨论】:

标签: wpf wpf-controls


【解决方案1】:

您必须在 ShowDialog 之前设置所有者窗口:

modalWindow.Owner = RootWindow;

【讨论】:

  • 我做到了(我在问题的第一句话中说明了。)
  • 我发现这种行为的发生是因为我为 Windows 设置了某些属性的方式。没关系!!! (但谢谢)。
  • Top most 与模态状态交互,因为它对窗口说:“嘿,你不是我的根,我的根是窗口”
  • @user2158172 你还记得,哪些设置造成了这种奇怪的行为吗?看来我有类似的问题...
猜你喜欢
  • 2011-02-05
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多