如何为WPF 4 DataGrid的列标题添加右键单击上下文菜单? [英] How to add a right click context menu to Column Header for a WPF 4 DataGrid?
本文介绍了如何为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屋!
查看全文