我想为WPF DataGrid列标题编写样式。我的网格如下
`<DataGrid >
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<Label Content="{DynamicResource colName}"></Label>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>`
我想使用DynamicResource绑定标签内容。此代码正常工作。我想写一种样式将此绑定方法应用于网格列。我写了如下样式。
`<Style x:Key="ColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridColumnHeader">
<Label Content="{ TemplateBinding Content}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>`
我将这种样式应用于网格如下。
<DataGrid >
<DataGrid.Columns>
<DataGridTextColumn HeaderStyle="{StaticResource ColumnHeaderStyle}" Header="{ DynamicResource colName}" />
</DataGrid.Columns>
</DataGrid>
使用样式标头后不绑定。我怎么解决这个问题?
谢谢!
最佳答案
我们可以尝试如下
<Style x:Key="ColumnHeaderStyle" TargetType="{x:Type dg:DataGridColumnHeader}">
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Background" Value="Black" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="dg:DataGridColumnHeader">
<dg:DataGridHeaderBorder
x:Name="headerBorder"
Background="Red">
<Border BorderThickness="1"
CornerRadius="2"
Background="Black"
BorderBrush="Green">
<Grid>
<TextBlock Text="{TemplateBinding Content}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
TextWrapping="Wrap"/>
</Grid>
</Border>
</dg:DataGridHeaderBorder>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<dg:DataGrid Grid.Row="1" Grid.RowSpan="1"
Name="UserName"
HorizontalAlignment="Left"
AutoGenerateColumns="True"
Width="800"
Background="Yellow"
ColumnHeaderHeight="20"
ColumnHeaderStyle="{DynamicResource ColumnHeaderStyle}"
RowStyle="{StaticResource RowStyle}"
CanUserAddRows="False"
CanUserDeleteRows="False"
/>
关于c# - 如何将样式写入WPF DataGridColumnHeader,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18763721/