0

我正在使用 mvvm 模式开发 WPF 应用程序。我遇到了一个奇怪的问题。有一个表单,其中包含一个 devexpress DXGrid 控件。演示者中有一个绑定到双击手势的命令。当命令触发时,通过工厂类创建并显示一个新窗口(使用 Show() 方法)。

因此,当显示此窗口时,有时会阻止整个应用程序(所有应用程序窗口)。在我关注任何其他应用程序后,此锁定消失。

更新 devexpress 版本后第一次出现此问题。然后在双击网格行后显示新窗口时出现此问题。通过设置新窗口的 Owner 属性部分解决了该问题。

现在这个问题时有发生。似乎这里涉及线程,但我不明白如何。=(

ps:还有一个更奇怪的事情,当显示新窗口并且没有发生锁定问题时,第一个窗口仍然是焦点,我必须单击新显示的窗口才能使用放置在上面的任何控件。

我努力了:

  • 设置 ShowActivated 属性
  • 在 Show() 之后调用 Activate()
  • newform.Dispatcher.CheckAccess()
    判断哪个线程调用 Show()
    方法
  • 显示后检查 newform.IsActive 属性(值 = true)

请告诉我如何解决好吗?谢谢你。

4

1 回答 1

0

要解决第一个窗口而不是新显示的窗口被聚焦的问题,您需要在为新窗口调用 show 方法后执行以下操作:

Mouse.Capture(null);

希望问题能得到解决。

于 2011-06-02T14:33:51.873 回答