c# - 如何使分配给按钮的命令的 RoutedUICommand.OnCanExecute 依赖于 Keyboard.FocusedElement?
问题描述
解决方案
如果您不需要将焦点放在测试按钮上,我只需在 btnTest1 上设置 Focusable="False"。
如果您仍然希望按钮可聚焦,一个想法可能是不使用 Keyboard.FocusedElement 而是使用FocusManager.GetFocusedElement,如下所示:
public class MyDataGridCellCommand : RoutedUICommand
{
public MyDataGridCellCommand()
{
this.InputGestures.Add(new KeyGesture(Key.F1));
this.Text = "Process selected cell";
}
public void OnExecuted(object sender, ExecutedRoutedEventArgs e)
{
if (FocusManager.GetFocusedElement(sender as DependencyObject) is DataGridCell) {
//Process selected cell...
}
}
public void OnCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = (FocusManager.GetFocusedElement(sender as DependencyObject) is DataGridCell);
}
}
推荐阅读
- session - Kubernetes 服务会话亲和性,如何通过服务而不是端点来坚持会话
- java - 如何在java中优先考虑某个请求?
- r - 删除具有其他值而不是所需值的分组行
- java - 当文件路径包含中文单词时,如何检查文件是否存在于Java中?
- data-structures - 存储用户名和密码的最佳方式
- ios - 滚动 UITableView 时集合视图单元格的大小发生变化
- bash - 执行从参数接收到的命令到 Bash 脚本中的函数
- git - 将超过 100MB 的文件推送到 GitHub
- azure - 连接到 Azure Signalr 时,appservice 可以充当客户端吗?
- mysql - 从 MySQL 中选择 7 行,除了最后 7、14、...、N*7 行