Как включить связывание ключей для DelegateCommand в Prism 4? - PullRequest
0 голосов
/ 25 февраля 2011

Я хотел бы включить связывание клавиш для DelegateCommand в настольном приложении Prism4.Например, в моем XAML-файле у меня есть это:

<Grid.InputBindings>
        <KeyBinding Gesture="CTRL+A" Command="{Binding Command3}"/>
</Grid.InputBindings>

<StackPanel>
   <Button Grid.Row="0" Grid.Column="1" Content="HitMe" prism:Click.Command="{Binding  Command3}" />
</StackPanel>

, а в моей ViewModel у меня есть это:

public DelegateCommand<string> Command3 { get; private set; }

    private void ExecuteCommand3(string commandParameter)
    {
        Debug.WriteLine("ExecuteCommand3");

    }

    private bool CanExecuteCommand3(string commandParameter)
    {
        return true;
    }

Когда я нажимаю кнопку HitMe, выводится строка отладки, но при нажатии клавиши CTRL+ A не имеет никакого эффекта.

Я рассмотрел использование класса CommandReference из TestMvvmExample2341, но, похоже, это дублирует функциональность механизмов Prism 4.

Есть ли простой способ получить CTRL + Aвызвать Command3 в Prism4?

1 Ответ

2 голосов
/ 26 февраля 2011

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

Во время выполнения установите фокус на кнопку, а затем нажмите клавишу. Также посмотрите на эти сообщения:

WPF MVVM KeyBinding не распознается сразу и не всегда работает

http://joyfulwpf.blogspot.com/2009/05/mvvm-commandreference-and-keybinding.html

...