我正在开发一个 Prism 应用程序,我需要在新窗口中发布 View 模型。为此,我创建了一个专门用于发布这些 View 模型的服务。我这样调用它:
windowService.Publish(myViewModel);
Publish 方法的主体是这样的:
public void Publish(FloatingViewModel viewModel)
{
var floatingWindow = ServiceLocator.Current.GetInstance<FloatingWindow>();
floatingWindow.DataContext = viewModel;
floatingWindow.Show();
}
执行 Show() 方法后,新窗口迅速出现在我的主窗口上方,然后消失在我的主窗口后面,就像它收回了焦点一样。
有人知道这种行为从何而来吗?
最佳答案
我终于找到了问题所在,它实际上比我想象的要深得多。 这个答案与所描述的问题无关,因为根本原因完全不同。
在窗口中发布 View 模型的代码实际上嵌套在 WPF 命令中,并且该命令通过 InvokeCommandAction 附加到 MouseDoubleClick 事件。我发现,即使您将事件绑定(bind)到命令,该事件也不会标记为已处理,因此会一直传播到它被处理为止。这导致我的主窗口收回焦点。
关于wpf - Window.Show() 显示新窗口然后消失在主窗口后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7571800/