【发布时间】:2014-08-14 16:17:46
【问题描述】:
我有一个带有自定义上下文菜单的 WPF 应用程序,效果很好,但我想确保如果用户单击上下文菜单到应用程序的另一部分,上下文菜单会关闭。我有一个全局应用事件,我可以调用它来关闭菜单,所以我真的在寻找如何最好地处理点击事件本身。
额外问题:我如何处理人们切换到另一个应用程序(即应用程序失去焦点)
更新 根据我尝试使用 EventTrigger 的 cmets,但它没有按预期工作。如果我点击关闭控件它不会触发,它只会在其他特定的东西获得焦点时触发
<i:EventTrigger EventName="LostFocus">
<i:InvokeCommandAction Command="{Binding MouseRightButtonUp}" />
</i:EventTrigger>
【问题讨论】:
-
这会是 contextMenu.lostFocus() 的情况吗? me.close()(或任何你的关闭函数)?
-
它是一个自定义上下文菜单 - 我正在使用
Popup并使用 MVVM,因此希望视图后面没有任何代码。 -
也许你的
Menu应该使用CaptureMouse()来通知鼠标的作用。 -
你能用事件触发器抓住 LostFocus 并触发 CallMethodAction 来关闭弹出窗口吗?只能在 xaml 中执行此操作。
-
@ChrisW。这正是我尝试过的,但没有按预期工作。我会用代码更新我的问题,但基本上如果我单击控件,它似乎永远不会触发