Расширить DataGrid ColumnHeaderStyle программно - PullRequest
2 голосов
/ 10 февраля 2012

Я определяю стиль DataGridColumnHeader с помощью ResourceDictionary с помощью Setter:

<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 Ответ

3 голосов
/ 10 февраля 2012

Вы можете попробовать это

<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;

надеюсь, это поможет ...

...