从上下文菜单中获取所选菜单项的名称(或索引),该菜单项是通过绑定到ObservableCollection的ItemsSource动态生成的

HaloMediaz

我有一个上下文菜单,其中包含1个菜单项。该菜单项已绑定到itemssource的ObservableCollection。

         <ListView.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Example Menu Item" 
                          Command="{Binding Path=DataContext.ExampleCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}}"
                          ItemsSource="{Binding ObservableItems}">
                </MenuItem>
            </ContextMenu>
        </ListView.ContextMenu>

如何获得所选菜单项的名称(或索引)。问题是我无法将命令绑定到每个单独的菜单项,因为它们是动态生成的。

例如,我如何知道单击了哪个项目,如下图所示?

在此处输入图片说明

任何帮助深表感谢。谢谢。

dkozl

您仍然可以为每个项绑定CommandCommandParameter动态生成的列表,但是您需要使用ItemContainerStyle

<ContextMenu>
    <MenuItem Header="Example Menu Item" ItemsSource="{Binding ObservableItems}">
        <MenuItem.ItemContainerStyle>
            <Style TargetType="{x:Type MenuItem}">
                <Setter Property="Command" Value="{Binding Path=DataContext.ExampleCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}}"/>
                <Setter Property="CommandParameter" Value="{Binding}"/>
            </Style>
        </MenuItem.ItemContainerStyle>
    </MenuItem>
</ContextMenu>

在此示例中CommandParameterExampleCommand作为参数传递给您的命令将是您集合中的一个项目(DataContext子项目的当前状态

编辑

要获取索引,您可以使用一对ItemsControl属性:AlternationCountAlternationIndex您设置AlternationCount集合中的项目数并传递AlternationIndex给命令

<MenuItem Header="Example Menu Item" ItemsSource="{Binding ObservableItems}" AlternationCount="{Binding ObservableItems.Count}">
   <MenuItem.ItemContainerStyle>
      <Style TargetType="{x:Type MenuItem}">
         <Setter Property="Command" Value="{Binding ...}"/>
         <Setter Property="CommandParameter" Value="{Binding RelativeSource={RelativeSource Self}, Path=(ItemsControl.AlternationIndex)}"/>
      </Style>
   </MenuItem.ItemContainerStyle>
</MenuItem>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档