В WPF, как я могу отменить нажатие клавиши после обработки его с помощью PreviewKeyDown? - PullRequest
4 голосов
/ 25 марта 2009

В моей таблице данных WPF я собираю ключ «delete», обрабатываю его, а затем сама таблица данных удаляет строку из пользовательского интерфейса, продолжая обрабатывать собственный обработчик для ключа удаления (что я и хочу).

Но теперь я хочу, чтобы CTRL-S открывал строку поиска , что и происходит, но он также убирает ячейку, в которой находился пользователь, когда он нажимал CTRL-S, поэтому ищу способ сообщить сетке данных об отмене нажатия клавиши , чтобы она не выполнялась в сетке данных.

Как я могу отменить нажатие клавиши, как это?

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 ]

12 голосов
/ 25 марта 2009
e.Handled = true;
1 голос
/ 06 сентября 2010

В немного другой ситуации у меня есть второй аргумент типа PreviewKeyDownEventArgs, в котором ситуация выглядит следующим образом:

e.IsInputKey = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...