从用户控件触发上下文菜单不起作用

本文关键字:上下文 菜单 不起作用 用户 控件 | 更新日期: 2023-09-27 18:31:40

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

法典:

<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 上下文菜单命令,但在尝试了所有解决方案后,它仍然不起作用。

从用户控件触发上下文菜单不起作用

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