我有一个包含菜单项的对象集合(视图模型),每个菜单项都有一个命令,当点击菜单项时我想要执行它们的命令。
如果我想要静态地创建菜单,我可以这样做:
<ContextMenu>
<MenuItem Header="{Binding Text1}" Command={Binding Command1}>
<MenuItem Header="{Binding Text2}" Command={Binding Command2}>
</ContextMenu>
但是当我事先不知道项的内容(它们来自一个集合)时,我需要为ContextMenu.ItemsSource分配值,并在ItemTemplate中放置文本。
<ContextMenu ItemsSource="{Binding MyMenuItems}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text2}" /> <!-- But where to put Command binding? TextBlock.Command makes no sense, and we have no access to MenuItem! -->
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
然而,这种方式使我无法绑定命令 - 因为我无法获取每行的 MenuItem!
请问有什么建议吗?谢谢大家!