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