如何将右键单击上下文菜单添加到 WPF 4 DataGrid 的列标题? [英] How to add a right click context menu to Column Header for a WPF 4 DataGrid?

查看:13
本文介绍了如何将右键单击上下文菜单添加到 WPF 4 DataGrid 的列标题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望 DataGrid 列标题的上下文菜单与其余单元格不同.所以使用常规的 ContextMenu 属性是行不通的.有 DataGrid.RowHeaderTemplate,但我找不到 DataGrid.ColumnHeaderTemplate.

I want the context menu for a DataGrid's column headers to be different than the rest of the cells. So using the regular ContextMenu property is not going to work. There is DataGrid.RowHeaderTemplate, but I can't find DataGrid.ColumnHeaderTemplate.

编辑/注意:列是动态生成的.

Edit/Note: Columns are generated dynamically.

推荐答案

将通用样式定位到所有 DataGridColumnHeaders:

Target a common Style to all DataGridColumnHeaders:

    <DataGrid.Resources>
         <ContextMenu x:Key="DataGridColumnHeaderContextMenu" ...>
         </ContextMenu>

         <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="ContextMenu"
                    Value="{StaticResource DataGridColumnHeaderContextMenu}" />
         </Style>
   </DataGrid.Resources>

如果您想要为不同的列标题使用不同的上下文菜单,请使用触发器:

If you want different context menus for different column headers then use triggers:

     <DataGrid.Resources>
         <ContextMenu x:Key="ColumnHeaderContextMenu1" ...>
         </ContextMenu>

         <ContextMenu x:Key="ColumnHeaderContextMenu2" ...>
         </ContextMenu>

         <Style TargetType="{x:Type DataGridColumnHeader}">
             <Style.Triggers>
                <Trigger Property="Content" Value="Column1">
                    <Setter Property="ContextMenu"
                            Value="{StaticResource ColumnHeaderContextMenu1}" />
                </Trigger>
                <Trigger Property="Content" Value="Column2">
                    <Setter Property="ContextMenu"
                            Value="{StaticResource ColumnHeaderContextMenu2}" />
                </Trigger>
             </Style.Triggers>
        </Style>
   </DataGrid.Resources>

希望有所帮助.

这篇关于如何将右键单击上下文菜单添加到 WPF 4 DataGrid 的列标题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆