如何在datagrid WPF中创建中心列文本?

时间:2014-03-12 05:01:28

标签: wpf datagrid wpfdatagrid

我的数据网格中有很多列的wpf datagrid ..

<DataGrid.Columns>
           ...

            <mui:DataGridTextColumn x:Name="Column27" Width="50"  Header="Cabe" Binding="{Binding B4R27,UpdateSourceTrigger=PropertyChanged ,Converter={StaticResource CheckConverter}, Mode=TwoWay}" />
            <mui:DataGridTextColumn IsReadOnly="True" x:Name="Column28" Width="50"  Header="Jumlah Bahan Pokok" Binding="{Binding B4RJ,UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" >
                <DataGridTextColumn.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="Background" Value="#A2D1A2" />
                        <Setter Property="HorizontalAlignment" Value="Stretch" />
                    </Style>
                </DataGridTextColumn.CellStyle>

                <DataGridTextColumn.ElementStyle>
                    <Style TargetType="TextBlock">
                        <Setter Property="TextAlignment" Value="Center" />
                    </Style>
                </DataGridTextColumn.ElementStyle>

            </mui:DataGridTextColumn>
            <mui:DataGridTextColumn x:Name="Column29" Width="150"   Header="Tulis Nama Pengusaha" Binding="{Binding B4R28,UpdateSourceTrigger=PropertyChanged , Mode=TwoWay}" />
            <mui:DataGridTextColumn x:Name="Column30" Width="130"    Header="Tulis Alamat Lengkap" Binding="{Binding B4R29,UpdateSourceTrigger=PropertyChanged , Mode=TwoWay}" />
        </DataGrid.Columns>

我可以使用此代码使用上面的代码

在datagrid中创建我的文本
     <DataGridTextColumn.ElementStyle>
                    <Style TargetType="TextBlock">
                        <Setter Property="TextAlignment" Value="Center" />
                    </Style>
            </DataGridTextColumn.ElementStyle>

但我想在我的数据网格中的所有列datagridtextcolumn中使用它。 我怎样才能使它像样式一样,所以我的所有datagridtextcolumn都有相同的居中对齐文本?

1 个答案:

答案 0 :(得分:7)

对于 Style

,请尝试DataGridColumnHeader
<DataGrid.Resources>
    <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="HorizontalContentAlignment" Value="Center" />
    </Style>
</DataGrid.Resources>

您也可以将他加入ColumnHeaderStyle

<DataGrid.ColumnHeaderStyle>
    <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="HorizontalContentAlignment" Value="Center" />
    </Style>
</DataGrid.ColumnHeaderStyle>

如果你有DataGridColumnHeader的当前样式,那么你需要使用BasedOn这样的样式继承:

<Style BasedOn="{StaticResource {x:Type DataGridColumnHeader}}" <--- Here may also be the key of your Style
       TargetType="{x:Type DataGridColumnHeader}">

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

如果您希望将DataGridCell的内容设置为居中,请使用此Style

<Style TargetType="{x:Type DataGridCell}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridCell}">
                <Grid Background="{TemplateBinding Background}">
                    <ContentPresenter VerticalAlignment="Center"
                                      HorizontalAlignment="Center" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>