我使用了以下方法:
<ListView x:Name="itemsListView" ItemsSource="{Binding MyItems}">
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="Remove"
Command="{Binding RemoveItem}"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}" />
</ContextMenu>
</ListView.ContextMenu>
</ListView>
由blindmeis here提供,用于创建和绑定ContextMenu
,如果我先选择一个项目然后右键单击,它会很好地工作。但是,如果我没有选择任何项目,而是单击ListView
中的任意位置,则该项目仍会出现,并使用null
调用命令。
答案 0 :(得分:1)
首先,将ContextMenu
移到资源中,然后根据是否{{1}将其应用于ListView
中ContextMenu
的{{1}} }}是否为DataTrigger
:
SelectedItem
答案 1 :(得分:1)
一种方法是在ContextMenu
上设置ListViewItem
而不是ListView
。
这将确保ContextMenu
仅在有ListViewItem可用时显示。如果未选中该项目,则将在用户右键单击该项目时出现。
这里唯一的技巧是处理DataContext
中的ContextMenu
问题。这可以通过将Tag
的{{1}}属性设置为ListViewItem
的{{1}}来完成。这将允许DataContext
绑定到ListView
命令。
ContextMenu
我希望这会有所帮助!