在我为新窗口调用Show()后,整个wpf应用程序被阻止

时间:2011-06-02 08:30:48

标签: wpf lockup

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

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

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

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

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

我试过了:

  • 设置ShowActivated属性
  • 在Show()
  • 之后调用Activate()
  • newform.Dispatcher.CheckAccess()到
    确定哪个线程调用Show()
    方法
  • 检查newform.IsActive属性 show(value = true)

你能告诉我怎么修理吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

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

Mouse.Capture(null);

希望问题能得到解决。