Window 中的 CommandBinding 无法捕获 ContextMenu 中命令的执行

2024-03-05

一个非常简单明了的例子。

我有一扇窗户。它设置了 CommandBindings 以捕获 RoutedUICommand 执行。

<Window
   ...
   >
   <Window.CommandBinding>
       <CommandBinding 
           Command="{x:Static local:Commands.Command1}"  
           Executed="OnCommand1Executed" 
           CanExecute="OnCanCommand1Execute" 
           />
   </Window.CommandBinding>
</Window>

窗口中托管有一个 UserControl,其中声明了一个 ContextMenu。 ContextMenu 项具有分配给同一 RoutedUICommand 的 Command 属性。

<ContextMenu>
    <MenuItem Command="{x:Static local:Commands.Command1}" />
</ContextMenu>

但菜单项仍然处于非活动状态(==禁用)。不知何故,命令执行不会进入窗口。也许是因为 ContextMenu 位于弹出窗口内?

如果我将所需的 CommandBinding 添加到 ContextMenu.CommandBindings 集合中,一切都会正常工作。但这是一个糟糕的选择,因为没有地方容纳单个“全局”CommandBinding。

我怎样才能以最好的方式解决问题?

UPD:事实证明,情况并没有那么糟糕。命令未绑定仅在第一次用户打开菜单。如果关闭并重新打开一切都很好。尽管如此,这似乎并不可取,而且是一种相当奇怪的行为。


如果添加 Focus(); 还会出现这种情况吗?就在InitializeComponent()之后;在Windows构造函数中?

听起来 WPF 在从上下文菜单中查找可视化树时遇到问题。将焦点设置到主窗口可能会修复它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Window 中的 CommandBinding 无法捕获 ContextMenu 中命令的执行 的相关文章

随机推荐

  • 使用正则表达式进行 C Sharp 文件夹搜索

    从顶级目录获取与特定正则表达式匹配的文件夹列表的最有效方法是什么 我目前只是递归地迭代子文件夹以查看它们是否与正则表达式匹配 如果匹配 我将使用目录路径获取文件名 目前 由于此目录中的文件夹数量较多 使用当前方法进行此搜索大约需要 50 分
  • 如何在反应路由中设置延迟功能?

    如何在 React js 上设置延迟函数 有没有什么方法可以在反应路由中添加或删除类 以便页面可以转换 添加 删除或切换类每次都应该有效 是否可以使用延迟功能添加 删除或切换路由类 或者我可以使用第三方库吗 import React fro
  • 在 Android 中获取 Google 地图时出错

    我正在开发一个 Android 应用程序 该应用程序需要 Google 地图 为此 我在以下链接中使用相同的示例 谷歌地图的链接 http www androidhive info 2013 08 android working with
  • Android-decodeBase64 导致应用程序崩溃

    我必须加密一个字符串 但应用程序无法达到加密方法 它在加载时崩溃 我正在使用 Apache Commons Codec 库 private EditText txtPass EditText findViewById R id txtPas
  • BxSlider 将最后一张幻灯片显示为第一张幻灯片

    我创建了 4 个滑块 最初 所有 4 个滑块都是隐藏的 显示 无 因此我使用此代码在单击其各自类别时显示相关滑块 滑块配置 touchEnabled true hideControlOnEnd true preloadImages all
  • 调用(委托)

    谁能解释一下上面写的这个声明link http msdn microsoft com en us library system windows forms control invoke aspx Invoke Delegate 在拥有该委托
  • 区分不可变对象和可变对象的 const 引用

    C 中是否有任何公认的方法来区分对不可变对象和可变对象的 const 引用 e g class DataBuffer class Params class C public Given references must be valid du
  • HERE 地图 JS API 3.1 - Angular 中样式组“非碰撞”错误

    在使用卫星基础层加载 HERE 地图时 有时会出现此错误 Tangram error Error for style group non collision for tile 13 16 15542 12554 15 Cannot read
  • 如何使 sql 作业步骤退出报告失败

    我有一个sql作业步骤 像这样 Declare Result varchar 255 exec myprocedure Result Result output 我想做的事 如果 Result Error 则将作业标记为失败 我该如何实现这
  • 条形图/折线图 - 仅显示最后一个数据点的标签

    我无法获得条形图或折线图来显示 X 轴上的所有标签 正如您在提供的打印屏幕中看到的 只有最新的数据点显示其标签 这是使用场景生成器时的情况 我是否必须有一个带有用于 CategoriesAxis 的字符串的 ObservableList 我
  • PyQt 从 GUI 获取值

    我使用构建了一个用户界面QtDesigner然后转换 ui to py 用户界面有不同comboBox and textBox单击 运行 按钮后我想从中读取值 运行函数 然后在计算完成后填充用户界面的其他文本框 但是当我改变的值comboB
  • 如何解决“重定向已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头”?

    我正在开发一个应用程序 使用Vue js 根据我的设置 当设置更改时 我需要将变量传递给我的 URL get http 172 16 1 157 8002 firstcolumn c1v c1b function data some cod
  • STS 报告的动态 Web 模块版本错误

    我使用 Spring 3 0 6 和 Maven 3 0 3 在 STS 2 9 2 中创建了一个 Web 项目 我创建了一些页面和代码 没有任何错误 我已在项目的 pom xml 中将 Spring 库版本从 3 0 6 升级到 3 1
  • 单击更改 div 的颜色和数字

    我想在单击 div 时更改 html 元素的颜色和数量 例如 当您单击up arrow数字从 4 变为 5 颜色也变化 也发生变化 initial state 4 upvoted 5 down voted 3 这是我到目前为止所拥有的 我知
  • PHP导出rtf包含css文件

    我想用php导出rtf文件 但不知道为什么涉及到css文件 当我打开一个带有扩展名的文件时 Rtf 与 Microsoft Office 2007 它说 加载过程中以下区域出现了问题 丢失文件 C Users 用户电脑 Downloads
  • sys.path 包括 py.test rootdir 以使测试相对于项目根目录导入

    我在 pytest 中遇到问题 未将我的项目 rootdir 包含在 sys path 列表中 相反 它包含默认情况下测试所在的目录 这是我的项目结构 proj setup py mypackage init py a py tests t
  • 计算机科学理论中该问题描述的正确问题名称/算法是什么?

    问题是我有 X 个不同权重值的物品必须放入 Y 个容器中 容器具有不同的尺寸 例如容纳不同的最大重量 每个集装箱的总装载量必须大致等于其他集装箱的装载量 但集装箱不需要装满或最小化 必须使用所有容器 这让我想起了 背包 问题 但是我有多个不
  • Serde 内部标记带有公共字段的枚举

    我的 JSON 大致是这样的 commonA 1 commonB 2 type Foo fooSpecificA 3 fooSpecificB 4 commonA 5 commonB 6 type Bar barSpecificA 7 ba
  • 如何克隆多个特定子模块?

    我需要编写一个脚本来克隆升压库 https www boost org 但不幸的是 存储库非常大 之后我只需要使用一些子模块 我想将它们存储在一个字符串变量中 如下所示 MODULES tools build libs system 然后将
  • Window 中的 CommandBinding 无法捕获 ContextMenu 中命令的执行

    一个非常简单明了的例子 我有一扇窗户 它设置了 CommandBindings 以捕获 RoutedUICommand 执行