具有资源文件的中心DataGridTextColumn标头中的NewLine

时间:2015-03-06 13:10:48

标签: c# wpf datagrid

我想实现DataGridColumn中的Header有一个换行符(2行),每个文本都居中。此外,文本应来自资源文件。 我尝试使用ALT + ENTER在资源文件中创建换行符但文本不居中,看起来像这样:

| LINE1LONG |
| LINE2     |

WPF中的我的DataGridTextColumn

 <DataGridTextColumn Width="4*" IsReadOnly="False" 
  Header="{x:Static p:Resources.DG_HEADER_DESC}" Binding="{Binding Description, Mode=TwoWay}">
  </DataGridTextColumn>

中心适用于单行,但不适用于具有以下样式的两行:

 <Style TargetType="DataGridColumnHeader">
            <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
        </Style>

有没有人有想法?

2 个答案:

答案 0 :(得分:3)

您可以为标题创建自定义模板,在文本块中将文本居中,而不是标题中的文本块:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTextColumn>
            <DataGridTextColumn.Header>
                <GridViewColumnHeader>
                            <TextBlock TextAlignment="Center" Text="this is a text&#x0a;and here some more" />
                </GridViewColumnHeader>
            </DataGridTextColumn.Header>
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

答案 1 :(得分:0)

如果您想保持使用资源文件的能力

    <DataGrid>
        <DataGrid.Columns>
            <DataGridTextColumn>

                <!-- Column Width--!>
                    <DataGridTextColumn.Width>4</DataGridTextColumn.Width> 
                <!-- Column Width--!>

                <DataGridTextColumn.IsReadOnly>False</DataGridTextColumn.IsReadOnly>

                <DataGridTextColumn.Binding>
                   <Binding Path="{Binding Description, Mode=TwoWay}"/>
                </DataGridTextColumn.Binding>

                <DataGridTextColumn.Header>
                    <DataGridColumnHeader Content="{x:Static p:Resources.DG_HEADER_DESC}" 
                                          HorizontalAlignment="Stretch" 
                                          HorizontalContentAlignment="Center" 
                                          TextBlock.TextAlignment="Center"> 

                        <!-- Header Width--!>
                            <DataGridColumnHeader.Width>4</DataGridColumnHeader.Width>
                       <!-- Header Width--!>

                    </DataGridColumnHeader> 
                </DataGridTextColumn.Header>
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>