【问题标题】:Handle any unhandled click event in wpf app处理 wpf 应用程序中任何未处理的点击事件
【发布时间】: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。这正是我尝试过的,但没有按预期工作。我会用代码更新我的问题,但基本上如果我单击控件,它似乎永远不会触发

标签: c# .net wpf xaml


【解决方案1】:

为什么不使用支持该任务的相关控件来维护上下文菜单的行为,并使用控件模板以不同方式呈现该控件的视觉构成。

这就是控件模板存在的原因。

【讨论】:

    猜你喜欢
    • 2015-03-28
    • 1970-01-01
    • 2016-06-07
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多