KeyBinding - RelayCommand находится в xaml.cs - PullRequest
4 голосов
/ 14 сентября 2011

Я привязываю свои текстовые поля к классу ViewModel. Но, кнопочную команду (это RelayCommand, расширенная от ICommand) я связываю с UsersView.xaml.cs. В конструкторе UsersView.xaml.cs у меня есть это:

DataContext = UserVM;
btnAdd.DataContext = this;

Вот как я привязываю кнопку - она ​​работает.

<Button Command="{Binding Add}" Content="Add user" />

Теперь я хочу добавить KeyGesture для этой кнопки, но не могу установить DataContext для InputBindings, и компилятор не может найти эту команду Add в классе UsersVM.

<UsersView.InputBindings>
    <KeyBinding Key="F10" Command="{Binding Add}" />
</UsersView.InputBindings>

1 Ответ

2 голосов
/ 14 сентября 2011

У меня было это в окне, и это код, который я использовал ...

<Window
   x:Class="MVVMExample.MainWindow"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:myViewModels="clr-namespace:MVVMExample"
   Title="MainWindow"
   x:Name="MyMainWindow"
   Height="350"
   Width="525">

Обратите внимание, что я установил x.Name окна. Затем в моем связывании ключей я сделал это ...

<Window.InputBindings>

    <KeyBinding
        Key="F10"
        Command="{Binding ElementName=MyMainWindow, Path=DataContext.AddPersonCommand}" />

</Window.InputBindings>

AddPersonCommand - это моя ICommand из моей ViewModel.

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