您可以为 DataGridColumnHeader 或 DataGridRowHeader 创建样式并将 ContentTemplate 设置为允许绑定 Header 属性的 DataTemplate。为此,您需要一个启用绑定的 IValueConverter。
标头位于 Controls.Primitives 命名空间中:
xmlns:dp="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
风格:
<Style TargetType="dp:DataGridColumnHeader" >
<Setter Property="ContentTemplate" >
<Setter.Value>
<DataTemplate>
<ContentPresenter Content="{Binding Converter={StaticResource vcBC}}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
转换器:
public class BindingConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value.GetType().Name == "Binding")
{
ContentControl cc = new ContentControl();
cc.SetBinding(ContentControl.ContentProperty, value as Binding);
return cc;
}
else return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
转换器实例:
<yourassembly:BindingConverter x:Key="vcBC"/>