我正在开发一个Prism应用程序,我需要在新窗口中发布视图模型。为此,我创建了一个专门用于发布这些视图模型的服务。我称之为:
windowService.Publish(myViewModel);
Publish方法的主体是这样的:
public void Publish(FloatingViewModel viewModel)
{
var floatingWindow = ServiceLocator.Current.GetInstance<FloatingWindow>();
floatingWindow.DataContext = viewModel;
floatingWindow.Show();
}
执行Show()方法后,新窗口快速显示在我的主窗口上方,然后消失在主窗口后面,就像它取回焦点一样。
有人知道这种行为可能来自哪里吗?
答案 0 :(得分:0)
我终于找到了问题,实际上它比我想象的更深。 这个答案与所描述的问题不相关,因为根本原因完全不同。
在窗口中发布视图模型的代码实际上嵌套在WPF命令中,并且此命令通过InvokeCommandAction附加到MouseDoubleClick事件。我发现,即使将事件绑定到命令,事件也不会标记为已处理,因此会传播直到处理完为止。这导致我的主窗口收回焦点。