以编程方式扩展DataGrid ColumnHeaderStyle

时间:2012-02-10 07:43:48

标签: c# wpf .net-4.0 datagridcolumn

我在ResourceDictionary中使用Setter定义了DataGridColumnHeader的样式:

<Style TargetType="{x:Type DataGridColumnHeader}">
  <Setter Property="Background">
    <Setter.Value>
      <LinearGradientBrush EndPoint="0,0" StartPoint="0,1">

等等(不是很重要。

现在我想通过ColumnHeader的工具提示扩展样式。我必须在代码中设置此工具提示,因为在某些情况下它是不同的。

我可以这样做:

var style = new Style(typeof(System.Windows.Controls.Primitives.DataGridColumnHeader));
style.Setters.Add(new Setter(ToolTipService.ToolTipProperty,"my tooltop"));
dgcol1.HeaderStyle = style;

但很明显,资源字典中的所有其他样式设置器都会被覆盖。 如何通过代码将我的工具提示添加到ColumnHeader? 有谁有想法吗?谢谢!

1 个答案:

答案 0 :(得分:3)

你可以尝试这个

<Style x:Key="baseStyle" TargetType="{x:Type DataGridColumnHeader}">
  <Setter Property="Background">
    <Setter.Value>
      <LinearGradientBrush EndPoint="0,0" StartPoint="0,1">
    </Setter.Value>
  </Setter Property="Background">
</Style>

<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn={StaticResource baseStyle}>

背后的代码

var style = new Style(typeof(System.Windows.Controls.Primitives.DataGridColumnHeader));
style.BasedOn = this.TryFindResource("baseStyle") as Style;
style.Setters.Add(new Setter(ToolTipService.ToolTipProperty,"my tooltop"));
dgcol1.HeaderStyle = style;

希望这会有所帮助...