Выбор подменю Item в MVVM

У меня есть следующий XAML, используемый для заполнения списка под-MenuItem с RecentDocuments:

<MenuItem Header="_Recent Studies" 
          ItemsSource="{Binding RecentFiles}"
          AlternationCount="{Binding Path=Items.Count, 
                                     Mode=OneWay, 
                                     RelativeSource={RelativeSource Self}}" 
          ItemContainerStyle="{StaticResource RecentMenuItem}"/>

Где во ViewModel у меня есть следующее RecentFiles имущество

private ObservableCollection<RecentFile> recentFiles = new ObservableCollection<RecentFile>();
public ObservableCollection<RecentFile> RecentFiles
{
    get { return this.recentFiles; }
    set
    {
        if (this.recentFiles == value)
            return;
        this.recentFiles = value;
        OnPropertyChanged("RecentFiles");
    }
}       

Теперь это работает нормально и отображает мои последние пункты меню, например, так:

Пункты меню

Мой вопрос как я могу привязать событие click к моим недавним файлам MenuItem s? Я умею пользоваться AttachedCommands но я не вижу, как это может быть достигнуто.

Спасибо за ваше время.

1 ответ

Решение

Если вы используете шаблон MVVM, вам вообще не нужно событие Click.

Вы должны использовать свойство MenuItem.Command для связи с вашей ViewModel.

КАК?

Как я вижу, вы используете ItemContainerStyle. Вы можете добавить следующую строку в этот стиль:

<Style x:Key="RecentMenuItem" TargetType="MenuItem">
    ...
    <Setter Property="Command" Value="{Binding Path=SelectCommand}" />
    ...
</Style>

И в твоем RecentFile:

 public ICommand SelectCommand { get; private set; }

Вы можете инициализировать команду внутри конструктора RecentFile учебный класс.

Другие вопросы по тегам