如何从上下文菜单中获取所选项目

时间:2019-07-11 14:58:09

标签: c# xaml

我有一个上下文菜单,该菜单绑定到项目列表。当我单击一个项目时,命令会执行,但是我在将所选项目作为参数传递时遇到问题,有人可以识别我在做什么吗?

我尝试将{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}}作为命令参数传递,但是它只是在上下文菜单中以及何时提供了整个列表。当我尝试{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MenuItem}}}时,看不到任何价值。

    <ContextMenu x:Key="SelectFileTab" ItemsSource="{Binding ContextMenuItems}" x:Name="contextmenu">
        <ContextMenu.ItemTemplate>
            <DataTemplate>
                <MenuItem Header="{Binding}">
                </MenuItem>
            </DataTemplate>
        </ContextMenu.ItemTemplate>
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="PreviewMouseUp">
                <i:InvokeCommandAction Command="{Binding SelectedFileToAdd, Mode=OneWay}" CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>

    </ContextMenu>     

1 个答案:

答案 0 :(得分:0)

我真的很复杂,很简单,不需要使用交互。触发命令,我要做的就是

<ContextMenu x:Key="SelectFileTab" ItemsSource="{Binding ContextMenuItems}" x:Name="contextmenu">
        <ContextMenu.ItemTemplate>
            <DataTemplate>
                 <MenuItem Header="{Binding}" Command="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.SelectedFileToAdd}"
                                       CommandParameter="{Binding RelativeSource={RelativeSource Self}}"/>
            </DataTemplate>
        </ContextMenu.ItemTemplate>
   </ContextMenu>