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

时间:2012-07-31 13:37:03

标签: wpf

我有一个带有绑定项的上下文菜单,我想设置一个命令和命令参数,所以我知道点击了哪个项目,但我不知道如何。

<MenuItem Command="{Binding Sync}"   
  Header="Synchronize" 
  ItemsSource="{Binding ItemsToSync}">
  <MenuItem.Icon>
      <Image Height="25" Source="Sync.png" />
  </MenuItem.Icon>
</MenuItem>

2 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情: 在这个例子中,我有一个列表视图,我可以右键单击并删除所选项目。我在这里使用RelativeSource的原因是因为在菜单项中传递参数时,大多数时候在这个级别你无法访问页面的datacontext。希望这会有所帮助。

               <ListView.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="Delete" Command="{Binding Path=DeleteDescriptions}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}" Name="MenuItem1">
                        </MenuItem>
                    </ContextMenu>
                </ListView.ContextMenu>

答案 1 :(得分:1)

这没有帮助,但我能够创建自己的解决方案。

 <MenuItem Header="Synchronize" ItemsSource="{Binding ItemsToSync}">
                    <MenuItem.Icon>
                        <Image Height="25" Source="Sync.png" />
                    </MenuItem.Icon>
                    <MenuItem.ItemContainerStyle>
                        <Style>
                            <Setter Property="MenuItem.Header" Value="{Binding Name}" />
                            <Setter Property="MenuItem.IsChecked" Value="{Binding IsCurrent}" />
                            <Setter Property="MenuItem.Command" Value="PT:Commands.SyncFromContextMenu" />
                            <Setter Property="MenuItem.CommandParameter" Value="{Binding}" />
                        </Style>
                    </MenuItem.ItemContainerStyle>

                </MenuItem>
</MenuItem>

我必须为命令创建一个静态类。