Window.Show()显示新窗口,然后在主窗口后面消失

时间:2011-09-27 15:35:31

标签: wpf focus window prism

我正在开发一个Prism应用程序,我需要在新窗口中发布视图模型。为此,我创建了一个专门用于发布这些视图模型的服务。我称之为:

windowService.Publish(myViewModel);

Publish方法的主体是这样的:

public void Publish(FloatingViewModel viewModel)
{
    var floatingWindow = ServiceLocator.Current.GetInstance<FloatingWindow>();

    floatingWindow.DataContext = viewModel;
    floatingWindow.Show();
}

执行Show()方法后,新窗口快速显示在我的主窗口上方,然后消失在主窗口后面,就像它取回焦点一样。

有人知道这种行为可能来自哪里吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了问题,实际上它比我想象的更深。 这个答案与所描述的问题不相关,因为根本原因完全不同。

在窗口中发布视图模型的代码实际上嵌套在WPF命令中,并且此命令通过InvokeCommandAction附加到MouseDoubleClick事件。我发现,即使将事件绑定到命令,事件也不会标记为已处理,因此会传播直到处理完为止。这导致我的主窗口收回焦点。