Wpf 如何在DataGrid中对列进行文本对齐?(理性的方式)

Wpf 如何在DataGrid中对列进行文本对齐?(理性的方式),wpf,datagrid,styles,text-alignment,Wpf,Datagrid,Styles,Text Alignment,我使用WPF(C#)。我使用数据网格。 我希望第一列与中心对齐,其他列右对齐 我有一般风格: <Style x:Key="TextInCellCenter" TargetType="{x:Type TextBlock}" > <Setter Property="HorizontalAlignment" Value="Center"/> </Style> <Style TargetType="{x:Type DataGridCell}">

我使用WPF(C#)。我使用数据网格。 我希望第一列与中心对齐,其他列右对齐

我有一般风格:

<Style x:Key="TextInCellCenter" TargetType="{x:Type TextBlock}" >
     <Setter Property="HorizontalAlignment" Value="Center"/>
</Style>

<Style TargetType="{x:Type DataGridCell}">       
     <Setter Property="HorizontalAlignment" Value="Right"/>
</Style>

数据网格:

<DataGrid Name="DG1">
  <DataGrid.Columns>
    <DataGridTextColumn ElementStyle="{StaticResource TextInCellCenter}" Binding="{Binding Path=Name}" />
    <DataGridTextColumn Binding="{Binding Path=Number}" />
    <DataGridTextColumn Binding="{Binding Path=Number}" />
    ....
    <DataGridTextColumn Binding="{Binding Path=Number}" />
    <DataGridTextColumn Binding="{Binding Path=Number}" />
  </DataGrid.Columns>
</DataGrid>

<DataGrid Name="DG2">
  <DataGrid.Columns>
    <DataGridTextColumn ElementStyle="{StaticResource TextInCellCenter}" Binding="{Binding Path=Name}" />
    <DataGridTextColumn Binding="{Binding Path=Number}" />
    <DataGridTextColumn Binding="{Binding Path=Number}" />
    ...
    <DataGridTextColumn Binding="{Binding Path=Number}" />
    <DataGridTextColumn Binding="{Binding Path=Number}" />
  </DataGrid.Columns>
</DataGrid>
....

....
...
....
我有所有列都是右对齐的

请告诉我,如何更改第一列的文本对齐方式


p、 如何以理性的方式做到这一点?我有很多类似的表。

您可以更改
TextBlock
ElementStyle
,将
TextAlignment
更改为
Right
Center
,并基于每列应用它

<DataGridTextColumn Binding="{Binding Path=Number}" >
   <DataGridTextColumn.ElementStyle>
      <Style TargetType="{x:Type TextBlock}">
         <Setter Property="TextAlignment" Value="Right"/>
      </Style>
   </DataGridTextColumn.ElementStyle>
</DataGridTextColumn>

谢谢,但是第一种方法不起作用,第二种方法不方便,因为我有10多个表,其中有很多相同的列(比如列“Number”)。为每个相同的列定义样式需要很多时间。
<DataGrid>
    <DataGrid.Resources>
        <Style x:Key="TextInCellCenter" TargetType="{x:Type TextBlock}" >
            <Setter Property="TextAlignment" Value="Center"/>
        </Style>
        <Style TargetType="{x:Type TextBlock}" x:Key="RightAligElementStyle">
            <Setter Property="TextAlignment" Value="Right"/>
        </Style>
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridTextColumn ElementStyle="{StaticResource TextInCellCenter}" Binding="{Binding Path=Name}" />
        <DataGridTextColumn Binding="{Binding Path=Number}" ElementStyle="{StaticResource RightAligElementStyle}" />
        <DataGridTextColumn Binding="{Binding Path=Number}" ElementStyle="{StaticResource RightAligElementStyle}"/>
        <DataGridTextColumn Binding="{Binding Path=Number}" ElementStyle="{StaticResource RightAligElementStyle}"/>
    </DataGrid.Columns>        
</DataGrid>