Удалить или изменить стандартные жесты клавиш стандартных команд - PullRequest
0 голосов
/ 22 августа 2010

Мне нужно удалить (или хотя бы изменить) жесты по умолчанию, связанные со стандартными командами wpf.

Вот моя проблема:

У меня есть Datagrid (XamDataGrid из Infragistics), с которым я связал созданную мной пользовательскую команду. Эта команда использует жест "ctrl-delete".
Это работает, пока я не редактирую значение ячейки.

Когда я редактирую ячейку, используется TextEditor. Когда я использую жест «ctrl-delete» вместо выполнения моей команды, выполняется команда DeleteNextWord.
Это нормально, у TextEditor есть фокус, и поскольку нет привязок или вложенных вложений, используются классовые.

Вот в чем заключается моя проблема. Я не могу (не переусердствовав) добавить жест привязки или ввода к этому экземпляру TextEditor.

Поэтому метод, который я пытаюсь использовать, состоит в том, чтобы либо удалить, либо изменить жест ключа «по умолчанию» команды DeleteNextWord.

Посмотрев с помощью .Net Reflector, чтобы понять, как были зарегистрированы команды, я увидел, что платформа получает ключ, связанный с командой, из ресурса.

В моем случае жест «ctrl-delete» исходит от ключа «KeyDeleteNextWord» в ресурсе «ExceptionStringTable» (внутренний тип SR, статический конструктор).

Итак, мой вопрос:

Как я могу перезаписать значение "KeyDeleteNextWord" в ресурсе "ExceptionStringTable"?

или, в более общем смысле:

Как глобально изменить жест по умолчанию для стандартной команды WPF?

Я бы с удовольствием предоставил больше информации, если это необходимо.

Спасибо.

1 Ответ

0 голосов
/ 22 августа 2010

У меня нет XamDataGrid, но я пытался с обычным TextBox.

tb.PreviewKeyDown += new KeyEventHandler(tb_KeyDown);
void tb_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.X && Keyboard.Modifiers == ModifierKeys.Control)
        {
            Trace.WriteLine("Ctrl+X");
            e.Handled = true;
        }
    }

Этот код будет обходить стандартную команду «Вырезать».

В вашем проекте вам может потребоваться изменить шаблон элемента управления, а затем использовать присоединенное свойство или поведение TextEditor для перехвата нажатия клавиши и отправки собственной команды.

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