可以在 WPF 数据网格中禁用 F2 键吗?

Posted

技术标签:

【中文标题】可以在 WPF 数据网格中禁用 F2 键吗?【英文标题】:Can the F2 key be disabled in the WPF Datagrid? 【发布时间】:2010-10-08 12:01:28 【问题描述】:

在 WPF DataGrid 中,F2 键用于编辑当前单元格。我的软件项目中的要求说 F2 应该做其他事情。我添加了一个键绑定,但它仅在键盘焦点不在 DataGrid 中时才有效。

我可以禁用或删除 DataGrid 对 F2 键的键绑定吗?

【问题讨论】:

【参考方案1】:

我没有找到一种方法来覆盖 DataGrid 中 F2 键的使用。我可以禁用 DataGrid 中的功能,但我不能同时将它连接到其他任何东西。

让利益相关者更容易改变需求。毕竟,大多数 Windows 用户都熟悉 F2 来启用编辑,就像在资源管理器和 Excel 中一样。

【讨论】:

@Greg。谢谢。是的,就像一缕阳光!【参考方案2】:

如果是 F2 键,如何在 Keyboard.PreviewKeyDown 附加事件或 UIElement.PreviewKeyDown 路由事件中将 RoutedEventArgs.Handled 属性设置为 true

【讨论】:

我会试一试,但这是否意味着 F2 永远不会冒泡到我的其他 F2 键绑定所在的 DataGrid 的父级? 不,在它被 隧道化 到 DataGrid 之前,你在父节点中拦截它。 我在 DataGrid 周围放置了一个装饰器,并在 PreviewKeyDown 中将 Handeled 设置为 true。这会停止隧道事件,因此 DataGrid 单元格不会进入编辑模式,但 KeyDown 事件不会冒泡,因此我的 F2 窗口输入绑定也不起作用。 RoutedEventArgs.Handled 不适用于输入键绑定。与其使用 KeyBinding,不如直接使用 PreviewKeyDown 事件来执行您的命令(然后设置 e.Handled = true)?

以上是关于可以在 WPF 数据网格中禁用 F2 键吗?的主要内容,如果未能解决你的问题,请参考以下文章

WPF数据网格左栏

无法编辑我的 DataGrid WPF Framework 4.5 的单元格

是否可以在 mvvm 模式中获取 wpf 数据网格上的动态列?

冻结wpf数据网格中的列

WPF 数据网格绑定工具提示在表格内容绑定刷新时闪烁

asp.net 我可以在单击按钮后禁用数据网格排序操作吗?