在WPF中,我如何在使用PreviewKeyDown处理按键后取消按键的操作?

4
在我的WPF Datagrid中,我捕获了“删除”键,对其进行处理,然后Datagrid本身通过继续处理其自己的“删除”键处理程序(这正是我想要的)从UI中删除行。
但是现在我想让CTRL-S打开搜索栏,它确实可以,但它还会继续清除用户按下CTRL-S时所在的单元格,因此我正在寻找一种方法告诉Datagrid取消按键操作,以便它不会在Datagrid上执行。
我该如何取消这样的按键操作? XAML:
<toolkit:DataGrid x:Name="TheDataGrid" DockPanel.Dock="Bottom"
                  CanUserAddRows="False"
                  AlternatingRowBackground="#ddd"
                  CanUserSortColumns="true"
                  PreviewKeyDown="TheDataGrid_PreviewKeyDown"
                  AutoGenerateColumns="False"
                  RowEditEnding="TheDataGrid_RowEditEnding">

代码后台:

private void TheDataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (Keyboard.IsKeyDown(Key.LeftCtrl) && Keyboard.IsKeyDown(Key.S))
    {
        ShowSearchBar();
    }

    switch (e.Key)
    {
        case Key.Delete:
            DeleteCustomer(sender, e);
            break;
    }
}
2个回答

11
e.Handled = true;

2
在稍微不同的情况下,我有第二个类型为PreviewKeyDownEventArgs的参数,在这种情况下的解决方法是:
e.IsInputKey = true;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接