我想为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/

10-12 05:25
查看更多