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

标签 wpf focus window prism

我正在开发一个 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/

相关文章:

javascript - 使用 dispatchEvent 的焦点事件

javascript - 如何故意卡住浏览器窗口(如警报、确认和提示)?

window - 如何在QML中创建一个新窗口?

c# - 只要TextBox具有键盘焦点,就保持弹出窗口处于打开状态并处于事件状态

c# - 两个具有不同 View 模型的用户控件之间的 MVVM 绑定(bind)

WPF Microsoft.Windows.Controls.Ribbon.RibbonApplicationMenu 和 PRISM

android - 显示 Toast 后如何使 edittext 自动对焦?

html - 如何更改外部元素的 CSS?

rust - 如何更改 Piston2D/PistonWindow/GlutinWindow 中的光标图标?

wpf - 如何在WPF中将三步操作更改为命令?