我尝试使用用户控件列表视图中的上下文菜单,但命令未触发(在需要时既不启用/禁用)。
代码:
<UserControl ....
<UserControl.Resources>
<ContextMenu x:Key="SharedInstanceContextMenu">
<MenuItem Header="Edit" Command="{Binding ElementName=UC, Path=DataContext.EditSelectedItemCommand}" CommandParameter="{Binding}"/>
</ContextMenu>
<Grid ...>
<ListView ....>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected}"/>
<Setter Property="ContextMenu" Value="{StaticResource SharedInstanceContextMenu}"/>
</Style>
</ListView.ItemContainerStyle>
如何触发命令(以及启用/禁用命令行为的一部分)?
(顺便说一句,这个问题看起来与Treeview context menu command not firing类似,但在尝试了所有解决方案之后仍然无效。)
答案 0 :(得分:1)
您的输出窗口是否包含绑定错误,抱怨视图模型上不存在该命令?如果是这样,可能意味着您的ContextMenu的DataContext未正确设置。上下文菜单不是可视树的一部分,因为它们需要弹出元素,这意味着它们不像其他控件那样继承DataContext。一种解决方案是使用PlacementTarget访问您的视图模型 - 有关详细信息,请参阅this post。