我的应用程序有一个AlwaysOnTop行为,我想让它在鼠标离开时失去焦点。有一些带有上下文菜单的按钮。问题是,一旦ContextMenu打开MouseLeave事件就会自动触发,即使鼠标仍然在我的窗口的子级上,它也会立即关闭,因为我将焦点设置到了其他外部应用程序上
private void This_MouseLeave(object sender, MouseEventArgs e)
{
if (!this.IsMouseOver)
{
OtherExternalWindow.Focus();
}
}我尝试在鼠标未结束时添加检查,但似乎上下文菜单不被视为我的窗口(?)的子级。我认为这可以通过命名我所有的ContextMenus并检查它们中是否有任何是开放的来实现的,但我希望避免这种方法,除非用其他方法是不可能的。
如何在鼠标离开时切换焦点而不中断上下文菜单行为?
发布于 2017-03-02 17:13:39
如果你不想让ContextMenu获得焦点,可以设置它的(和它的内部元素,比如MenuItems) Focusable="false"。
<Button Content="BBBB">
<Button.ContextMenu>
<ContextMenu Focusable="False">
<MenuItem Header="AAAA" Focusable="False"/>
</ContextMenu>
</Button.ContextMenu>
</Button>https://stackoverflow.com/questions/42550578
复制相似问题