use*_*652 2 css c# wpf xaml datagrid
我想为WPF DataGrid列标题编写样式.我的网格如下
`<DataGrid >
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<Label Content="{DynamicResource colName}"></Label>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>`
Run Code Online (Sandbox Code Playgroud)
我想使用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>`
Run Code Online (Sandbox Code Playgroud)
我将此样式应用于网格,如下所示.
<DataGrid >
<DataGrid.Columns>
<DataGridTextColumn HeaderStyle="{StaticResource ColumnHeaderStyle}" Header="{ DynamicResource colName}" />
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
使用样式标题后没有绑定.我怎么解决这个问题?
谢谢!
我们可以尝试如下
<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"
/>
Run Code Online (Sandbox Code Playgroud)