如何为WPF 4 DataGrid的列标题添加右键单击上下文菜单?

Joe*_*Joe 13 wpf wpfdatagrid

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

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

WPF*_*-it 24

将所有DataGridColumnHeaders的公共样式定位:

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

         <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="ContextMenu"
                    Value="{StaticResource DataGridColumnHeaderContextMenu}" />
         </Style>
   </DataGrid.Resources>
Run Code Online (Sandbox Code Playgroud)

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

     <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>
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.