WPF上下文菜单和列表视图

5
希望这很简单,但出于某种原因,我找不到直接的答案,而且我对WPF还不够熟悉,不知道该怎么做。
我有一个列表视图,它绑定到一个可观察集合的对象以显示。我想要一个上下文菜单,其中包含许多选项。上下文菜单中的选项与单击列表中特定对象相关(例如删除、导出等)。
因此,我需要将用户在我的列表视图中右键单击的对象作为参数传递给上下文菜单执行的命令。
我该怎么做?
编辑:我应该提到,我更喜欢大部分(如果不是全部)使用XAML的解决方案 - 我正在尝试避免在代码后台中编写重要代码。如果那是唯一的方法...
进一步编辑:我忘记提及的更多重要细节。我想要执行的命令在用户控件的数据上下文中绑定的对象上,而不是在列表视图中的对象上。因此,我需要将上下文菜单的列表视图项绑定到用户控件数据上下文中的命令,并将列表视图项作为参数传递给该命令。
1个回答

4
这取决于您的 ContextMenu 是作为单个项目模板的一部分还是附加到整个ListBox上。
如果您正在使用DataTemplate将 ContextMenu 附加到列表中的项目(这通常是最好的方法),则 MenuItem 上的 DataContext 已经设置,所以您只需要执行以下操作:
<MenuItem ... CommandParameter="{Binding}" />

另一方面,如果你的ContextMenu附加在整个ListBox上,你需要访问ListBoxSelectedItem属性:

<MenuItem ... CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource FindAncestor,ListBox,1}} />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接