【发布时间】:2017-03-02 08:44:50
【问题描述】:
我的应用程序具有AlwaysOnTop 行为,我希望它在鼠标离开时失去焦点。有一些带有上下文菜单的按钮。问题是ContextMenu 打开MouseLeave 事件自动触发的那一刻,即使鼠标仍在我的窗口的子窗口上,它也会立即关闭,因为我将焦点设置到其他外部应用程序
private void This_MouseLeave(object sender, MouseEventArgs e)
{
if (!this.IsMouseOver)
{
OtherExternalWindow.Focus();
}
}
我已尝试添加检查鼠标是否未结束,但似乎上下文菜单不被视为我的窗口的子项 (?)。我认为这可以通过命名我所有的 ContextMenus 并检查它们是否打开来实现,但我想避免这种方法,除非其他方式不可能。
如何在鼠标离开时切换焦点但不破坏上下文菜单行为?
【问题讨论】:
-
ContextMenu 不是您窗口的子窗口。它本身就是一个窗口。因此,当鼠标移到 ContextMenu 上时,它实际上会离开您的窗口。
标签: wpf window mouseleave