Avalonia DataGrid 输入处理

问题描述

我正在使用 Avalonia.Controls.DataGrid认情况下,当网格获得焦点并按下 Enter 键时,它会自动处理该事件并将选择移动到下一项。如何防止这种认行为?我想要一个自定义的 Enter KeyDown 处理程序。

解决方法

所以 KeyDown 事件不能在这里使用,因为特别是对于 Enter,它在自定义代码可以处理之前被 DataGrid 吞掉了。

相反,Key bindings 起作用。您可以将密钥绑定到这样的命令:

<DataGrid ...>
  <DataGrid.KeyBindings>
    <KeyBinding Gesture="Enter" Command="{Binding SelectCommand}" />
  </DataGrid.KeyBindings>
  ...
</DataGrid>

这也会在按下 Enter 时阻止网格移动到下一项。

,

试试这个:

1- 为您的数据网格命名(使用 x:name)

2- 把它放在你的构造函数中:

yourDataGridName.KeyDown += yourDataGridName_KeyDown;

3- 添加这个处理程序:

protected void yourDataGridName_KeyDown(object sender,KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
         //Put your custom code here 
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...