我希望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)
希望有所帮助.