Выбор подменю 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
учебный класс.