Событие Control Template с помощью Relay Command - PullRequest
1 голос
/ 27 октября 2011

У меня проблема с запуском событий в шаблоне элемента управления, который находится в другом шаблоне элемента управления, и с помощью команды светового реле MVVM.

В этом случае main_control создается в стиле generic.xaml.sub_control настраивается таким же образом.

main_control имеет несколько экземпляров sub_control в ObservableCollection

Теперь в моем проекте SL, реализованном с использованием MVVM Light, у меня есть представление с main_control в xaml.Это представление привязано к модели представления, которая заполняет его с помощью sub_control.

Я пытаюсь получить обратно в модель представления нажатый экземпляр sub_control.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 27 октября 2011

Убедитесь, что все правильно:

Предоставьте RelayCommand как свойство объекта, представляющего DataContext элемента sub_control. Это может быть ваша ViewModel, чаще всего это экземпляр класса сущности, к которому вы привязываете коллекцию. Убедитесь, что вы сделали его общедоступным и предоставили методы get и set.

  public RelayCommand MyCommand { get; set; }

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

  MyCommand = new RelayCommand(() =>
  {
     // Do something
  });

Наконец, установите привязку в вашем представлении

  xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
  xmlns:command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.SL4"
  ...
  <Button Content="Click Me">
    <i:Interaction.Triggers>
      <i:EventTrigger EventName="Click">
        <command:EventToCommand Command="{Binding MyCommand}"/>
      </i:EventTrigger>
    </i:Interaction.Triggers>
  </Button>
...