我有以下XAML用于使用RecentDocuments填充子MenuItem列表:
<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");
}
}
现在这样可以正常工作并显示我最近的菜单项:
我的问题是; 如何绑定我最近的文件MenuItem
上的点击事件?我可以使用AttachedCommands
,但我不知道如何实现这一点。
答案 0 :(得分:2)
如果您使用的是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
类的构造函数内初始化命令。