Как записать нажатую клавишу в XAML при использовании интерактивности EventName = PreviewKeyDown в DataGrid? - PullRequest
1 голос
/ 06 апреля 2020

У меня есть DataGrid, в котором много строк. Я хочу захватить нажатие клавиши клавиатуры или клавиш и выполнить соответствующий код в зависимости от нажатой клавиши. Я хочу, чтобы пользователь мог выполнить CTRL-D, чтобы удалить строку или нажать клавишу DELETE. Мне также нужно передать элемент DataGrid в качестве параметра в вызываемый код. Вот что я делаю в своем XAML.

<i:EventTrigger EventName="PreviewKeyDown">
    <i:InvokeCommandAction Command="{Binding DataContext.TargetFieldsKeyDownCommand, 
        RelativeSource={RelativeSource AncestorType={x:Type vw:MappingDataView}}}" >
        <i:InvokeCommandAction.CommandParameter>
             <MultiBinding Converter="{StaticResource KeyPressConverter}">
                  <Binding Source="Delete" />
                  <Binding ElementName="dtTDGrid" />
             </MultiBinding>
        </i:InvokeCommandAction.CommandParameter>
    </i:InvokeCommandAction>
</i:EventTrigger>

Я хочу заменить это, <Binding Source="Delete" />, фактической нажатой клавишей. Есть ли возможность сделать это с помощью интерактивности в XAML или мне нужно обрабатывать нажатую клавишу по-другому? Кто-нибудь из примеров того, что я пытаюсь сделать?

Использование MultiBinding of Interactive, это все, что я нашел для передачи 2 или более параметров команды вызываемому Событию. Если есть лучший способ вызвать обработчик событий при передаче нескольких параметров, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 15 апреля 2020

Я использовал предложение @ mm8. Теперь он работает так, как я хочу.

...