1

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

4

2 回答 2

1

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

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

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

当按下 Enter 时,这也会阻止网格移动到下一个项目。

于 2021-06-13T15:59:39.063 回答
0

试试这个 :

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 
    }
}
于 2021-06-12T07:47:35.253 回答