Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF ContextMenu with ItemsSource-如何绑定到每个项目中的命令?_Wpf_Binding_Command_Contextmenu - Fatal编程技术网

WPF ContextMenu with ItemsSource-如何绑定到每个项目中的命令?

WPF ContextMenu with ItemsSource-如何绑定到每个项目中的命令?,wpf,binding,command,contextmenu,Wpf,Binding,Command,Contextmenu,可能重复: 我有一组表示菜单项的对象(viewmodels)。每个菜单项都有一个命令,我希望在单击菜单项时执行该命令 如果我想静态地创建菜单,我会这样做: <ContextMenu> <MenuItem Header="{Binding Text1}" Command={Binding Command1}> <MenuItem Header="{Binding Text2}" Command={Binding Command2}> </

可能重复:

我有一组表示菜单项的对象(viewmodels)。每个菜单项都有一个命令,我希望在单击菜单项时执行该命令

如果我想静态地创建菜单,我会这样做:

<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>

然而,通过这种方式,我没有地方绑定命令——因为我无法获得每一行的菜单项

有什么建议吗?谢谢大家


<ContextMenu.ItemContainerStyle>
  <Style TargetType="MenuItem">
    <Setter Property="Command" Value="{Binding AssociatedCommand}" />
  </Style>
</ContextMenu.ItemContainerStyle>

其中AssociatedCommand是保存ICommand的viewmodel对象上的属性。

谢谢,我在链接线程中已经找到了相同的答案…如何分离两个菜单项的命令。如何分离多个菜单项的命令?让我们说“添加”和“删除”。的副本。