2014-06-06 18 views
-1

我使用WPF(C#)。我使用DataGrid。 我希望第一列與中心對齊,其他列右對齊。如何在DataGrid中對列進行文本對齊? (一種合理的方式)

我一般有風情:

<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中:

<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.s.如何以合理的方式做到這一點?我有很多類似的表格。

回答

2

而是改變DataGridCell風格的你可以改變ElementStyleTextBlock,改變TextAlignmentRightCenter並將其應用在每列的基礎

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

或創建此StyleDataGrid.Resources這樣你就可以申請更多然後一列

<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> 
+0

謝謝,但第一種方法不起作用,第二種方法是不方便的,因爲使用我有超過10個表格,其中很多添加相同的列(如列「數字」)。爲每個相同的列定義樣式需要很長時間。 – Olga