Я пошел от этого: Вопросы стиля WPF GridViewHeader
:
Теперь мне просто нужно избавиться от пробела справа от заголовка "Размер". У меня в основном есть шаблон для GridViewColumnHeader, который делает его TextBlock. Есть ли способ установить фон для этой области заголовка так, чтобы он охватывал всю ширину GridView?
ДОБАВЛЕННЫЙ КОД:
Это мой самый правый столбец. Сетка не охватывает 100% доступной области окна. В заголовке мне нужно все, что находится справа от этого столбца, чтобы иметь тот же фон, что и заголовки столбцов.
<Style x:Key="GridHeaderRight" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GridViewColumnHeader}">
<TextBlock Text="{TemplateBinding Content}" Padding="5" Width="{TemplateBinding Width}" TextAlignment="Right">
<TextBlock.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0.0" Color="#373638" />
<GradientStop Offset="1.0" Color="#77797B" />
</LinearGradientBrush>
</TextBlock.Background>
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Background" Value="Green" />
<Setter Property="Foreground" Value="White" />
<Setter Property="FontSize" Value="12" />
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0.0" Color="#373638" />
<GradientStop Offset="1.0" Color="#77797B" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
<GridViewColumn Width="200" HeaderContainerStyle="{ StaticResource GridHeaderRight}" Header="Size">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=EmployeeNumber}" HorizontalAlignment="Right"></TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
UPDATE
Я на один шаг ближе (я думаю) к решению этого.
Я добавил следующий код внутри тега GridView:
<GridView.ColumnHeaderContainerStyle>
<Style TargetType="GridViewColumnHeader">
<Setter Property="BorderThickness" Value="1"></Setter>
<Setter Property="BorderBrush" Value="Green"></Setter>
<Setter Property="Height" Value="Auto"></Setter>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0.0" Color="#373638" />
<GradientStop Offset="1.0" Color="#77797B" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
</GridView.ColumnHeaderContainerStyle>
Граница есть только для того, чтобы вы могли видеть границу того, что охватывает этот стиль. Это увеличенное изображение того, что это делает. Кажется, я хочу, если я смогу избавиться от маленькой белой границы на дне.
Итак, я думаю, что удаление этой крошечной белой нижней границы также будет принятым ответом для этого.
ColumnHeaderContainerStyle http://img170.imageshack.us/img170/3851/columnheadercontainerst.png