我有一个包含绑定项的上下文菜单,我想设置一个命令和命令参数,所以我知道单击了哪个项目,但我不知道如何。
<MenuItem Command="{Binding Sync}"
Header="Synchronize"
ItemsSource="{Binding ItemsToSync}">
<MenuItem.Icon>
<Image Height="25" Source="Sync.png" />
</MenuItem.Icon>
</MenuItem>
我有一个包含绑定项的上下文菜单,我想设置一个命令和命令参数,所以我知道单击了哪个项目,但我不知道如何。
<MenuItem Command="{Binding Sync}"
Header="Synchronize"
ItemsSource="{Binding ItemsToSync}">
<MenuItem.Icon>
<Image Height="25" Source="Sync.png" />
</MenuItem.Icon>
</MenuItem>
你可以尝试这样的事情:在这个例子中,我有一个列表视图,我可以右键单击并删除一个选定的项目。我在这里使用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>
这没有帮助,但我能够创建自己的解决方案。
<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>
我确实必须为该命令创建一个静态类。