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

时间:2009-03-25 10:08:29

标签: wpf events xaml

在我的WPF Datagrid中,我捕获“delete”键,处理它,然后datagrid本身通过继续处理自己的删除键处理程序(这就是我想要的)来从UI中删除该行。 p>

但是现在我想要 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 个答案:

答案 0 :(得分:12)

e.Handled = true;

答案 1 :(得分:1)

在稍微不同的情况下,我有第二个PreviewKeyDownEventArgs类型的参数,在这种情况下解决方案是:

e.IsInputKey = true;