首页 > 解决方案 > 在 wpf 数据网格中没有行的区域上隐藏 wpf 上下文菜单

问题描述

我有一个填充了数据的 WPF 数据网格。右键单击数据行时,我在行项目上放置了一个上下文菜单。但是上下文菜单也显示在数据行的外部。我在列标题上隐藏了上下文菜单,如下所示:

    <Style x:Key="dgHeaderStyle" TargetType="dg:DataGridColumnHeader">

       <Setter Property="ContextMenu">
           <Setter.Value>
               <ContextMenu Visibility="Collapsed" />
           </Setter.Value>
       </Setter>
    </Style>

但是如何隐藏/折叠数据网格行外部的上下文菜单?

我在 xaml 中定义了上下文菜单,如下所示:

    <dg:DataGrid.ContextMenu>
           <ContextMenu>
                <MenuItem Header="Update" Name="mnuUpdate" Click="mnuUpdate_Click" />
            </ContextMenu>
        </dg:DataGrid.ContextMenu>

我更改了在 grid.rowstyle 中定义上下文菜单。但它会抛出下面显示的错误。

上下文菜单

标签: wpfxamlcontextmenu

解决方案


删除ContextMenu_DataGrid dg:DataGrid.ContextMenu并将其添加到行中:

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow">
        <Setter Property="ContextMenu">
            <Setter.Value>
                <ContextMenu>
                    <MenuItem Header="Update" Name="mnuUpdate" />
                </ContextMenu>
            </Setter.Value>
        </Setter>
    </Style>
</DataGrid.RowStyle>

推荐阅读