从用户控件开始上下文菜单不起作用

时间:2012-04-18 23:37:02

标签: c# wpf xaml listview contextmenu

我尝试使用用户控件列表视图中的上下文菜单,但命令未触发(在需要时既不启用/禁用)。

代码:

<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类似,但在尝试了所有解决方案之后仍然无效。)

1 个答案:

答案 0 :(得分:1)

您的输出窗口是否包含绑定错误,抱怨视图模型上不存在该命令?如果是这样,可能意味着您的ContextMenu的DataContext未正确设置。上下文菜单不是可视树的一部分,因为它们需要弹出元素,这意味着它们不像其他控件那样继承DataContext。一种解决方案是使用PlacementTarget访问您的视图模型 - 有关详细信息,请参阅this post