我正在使用 mvvm 模式开发 WPF 应用程序。我遇到了一个奇怪的问题。有一个表单,其中包含一个 devexpress DXGrid 控件。演示者中有一个绑定到双击手势的命令。当命令触发时,通过工厂类创建并显示一个新窗口(使用 Show() 方法)。
因此,当显示此窗口时,有时会阻止整个应用程序(所有应用程序窗口)。在我关注任何其他应用程序后,此锁定消失。
更新 devexpress 版本后第一次出现此问题。然后在双击网格行后显示新窗口时出现此问题。通过设置新窗口的 Owner 属性部分解决了该问题。
现在这个问题时有发生。似乎这里涉及线程,但我不明白如何。=(
ps:还有一个更奇怪的事情,当显示新窗口并且没有发生锁定问题时,第一个窗口仍然是焦点,我必须单击新显示的窗口才能使用放置在上面的任何控件。
我努力了:
- 设置 ShowActivated 属性
- 在 Show() 之后调用 Activate()
- newform.Dispatcher.CheckAccess()
判断哪个线程调用 Show()
方法 - 显示后检查 newform.IsActive 属性(值 = true)
请告诉我如何解决好吗?谢谢你。