1

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

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

2 回答 2

3

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

               <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>
于 2012-07-31T15:24:01.513 回答
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>

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

于 2012-07-31T15:42:28.700 回答