【发布时间】:2014-10-08 15:00:42
【问题描述】:
我正在定义一个自定义 DataGridTextColumn,并在 DataGrid 上添加了“Tag”属性,如下所示
<local:DataGridTextColumn Binding="{Binding Path=Company}"
Header="Company"
Tag="String"
IsReadOnly="True" />
我已经定义了一些资源 XAML 来控制网格的呈现,但是我遇到了一个问题。我想根据使用触发器的“Tag”属性的值在 DataGridColumnHeader 上呈现自定义 ContextMenu。但是,我找不到从样式中引用列“标签”值的方法。我已经尝试过 DataTriggers 和常规 Triggers。
<Style TargetType="{x:Type DataGridColumnHeader}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=local:DataGridTextColumn}, Path=Tag}" Value="String">
<Setter Property="ContextMenu" Value="{StaticResource ColumnHeaderContextMenuString}" />
</DataTrigger>
<Trigger Property="Tag" Value="Int">
<Setter Property="ContextMenu" Value="{StaticResource ColumnHeaderContextMenuInt}" />
</Trigger>
<Trigger Property="Tag" Value="DateTime">
<Setter Property="ContextMenu" Value="{StaticResource ColumnHeaderContextMenuDateTime}" />
</Trigger>
</Style.Triggers>
【问题讨论】:
标签: c# .net wpf xaml wpfdatagrid