动态绑定菜单项
本文关键字:菜单项 动态绑定 | 更新日期: 2023-09-27 18:10:18
我正在尝试动态绑定MenuItem
。
我有public List<string> LastOpenedFiles { get; set; }
是我的数据源。我尝试运行的命令是public void DoLogFileWork(string e)
<MenuItem Header="_Recent..."
ItemsSource="{Binding LastOpenedFiles}">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header"
Value="What should be here"></Setter>
<Setter Property="Command"
Value="What should be here" />
<Setter Property="CommandParameter"
Value="What should be here" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
我想在LastOpenedFiles
的每个条目上单击它以进入DoLogFileWork
函数,并单击该条目值。
谢谢你的帮助。
<Setter Property="Header" Value="What should be here"></Setter>
没有,你已经在上面设置了_Recent...
<Setter Property="Command" Value="What should be here"/>
<Setter Property="CommandParameter" Value="What should be here"/>
您是否使用MVVM方法?如果是这样,您将需要一个暴露在窗口/控件绑定的ViewModel上的ICommand
,看看本文中提到的RelayCommand
(或者我相信是VS2012中的本机)。
这是你在虚拟机中设置的东西:
private RelayCommand _DoLogFileWorkCommand;
public RelayCommand DoLogFileWorkCommand {
get {
if (null == _DoLogFileWorkCommand) {
_DoLogFileWorkCommand = new RelayCommand(
(param) => true,
(param) => { MessageBox.Show(param.ToString()); }
);
}
return _DoLogFileWorkCommand;
}
}
然后在Xaml:
<Setter Property="Command" Value="{Binding ElementName=wnLastOpenedFiles, Path=DataContext.DoLogFileWorkCommand}" />
<Setter Property="CommandParameter" Value="{Binding}"/>
在这里,您将MenuItem
的Command
绑定到上面声明的DoLogFileWorkCommand
,并且CommandParameter
被绑定到菜单项绑定的列表中的字符串。