在MvvM模式中,需要为listview控件绑定右键菜单命令,实现右键菜单,触发Command命令,并传递选中的所在项。
<ListView.View>
<GridView >
<GridViewColumn Header="时间" Width="160" DisplayMemberBinding="{Binding Path=Name}" ></GridViewColumn>
<GridViewColumn Header="播放文件" Width="160" DisplayMemberBinding="{Binding Path=Number}" ></GridViewColumn>
<GridViewColumn Header="次数" Width="160" DisplayMemberBinding="{Binding Path=Remark}" ></GridViewColumn>
</GridView>
</ListView.View>
<ListView.ContextMenu>
<ContextMenu Width="100">
<MenuItem Header="详情" Command="{Binding DetailsAcountCmd}" CommandParameter="{Binding ElementName=listView,Path=SelectedItem}" Width="100">
</MenuItem>
<MenuItem Header="编辑" Command="{Binding EditAcountCmd}" CommandParameter="{Binding ElementName=listView,Path=SelectedItem}" Width="100">
</MenuItem>
<MenuItem Header="删除" Command="{Binding DeleteAcountCmd}" CommandParameter="{Binding ElementName=listView,Path=SelectedItem}" Width="100">
</MenuItem>
</ContextMenu>
</ListView.ContextMenu>
但这样会有问题,实际参数并不能传递过去,但我们也发现,通过Menu的Click事件是可以传递过去的,那么可以肯定,就是传递的方式有问题,这里具体方式如下
CommandParameter="{Binding PlacementTarget.SelectedIndex,RelativeSource={RelativeSource AncestorType=ContextMenu}}"
查看效果的话,请下载处理演示Demo示例Demo