Как сделать заголовок столбца WPF DataGrid прозрачным - PullRequest
1 голос
/ 01 февраля 2010

Я пытаюсь сделать заголовок столбца моего WPF Datagrid прозрачным.

Я могу установить цвет без проблем, но не могу сделать его прозрачным. Вот что я попробовал:

<Style x:Key="DatagridColumnHeaderStyle" TargetType="{x:Type tk:DataGridColumnHeader}">
   <Setter Property="Background" Value="Transparent" />
   <Setter Property="Foreground" Value="#C2C4C6" />
</Style>

<Style x:Key="DashboardGridStyle" TargetType="{x:Type tk:DataGrid}">
   <Setter Property="ColumnHeaderStyle" Value="{StaticResource DatagridColumnHeaderStyle}" />
   <Setter Property="Background" Value="Transparent" />
   <Setter Property="RowBackground" Value="Transparent" />
</Style>

<tk:DataGrid Style="{StaticResource DashboardGridStyle}" >
...
</tk:DataGrid>

С этим кодом, похоже, используется кисть по умолчанию.

Что мне не хватает?

Ответы [ 2 ]

4 голосов
/ 03 февраля 2010

С ответом Natxo (спасибо!) Я смог найти решение. И это тоже просто!

Зная, что позади того, который мы можем изменить с помощью ColumnHeaderStyle, был другой DataGridColumnHeader, мне просто нужно было установить стиль, который будет влиять на все DataGridColumnHeader:

<Style TargetType="{x:Type tk:DataGridColumnHeader}">
   <Setter Property="Background" Value="Transparent" />
</Style>
4 голосов
/ 03 февраля 2010

Я использовал Snoop, чтобы посмотреть, что происходит. Кажется, что другой DataGridColumnHeader всегда создается позади того, который вы можете изменить, и на него не влияют изменения стилей. Когда вы устанавливаете прозрачный фон, на самом деле он применяется правильно, так что вы видите этот призрачный заголовок позади (который имеет обычный серый фон).

Если вы примените цветной фон и поиграете с Opacity, вы увидите, как смешиваются два цвета. Я не знаю, можно ли это решить.

...