The obvious solution is to set a HorizontalAlignment property of DataGridCell style:
1 2 3 4 5 6 7 | <DataGridTextColumn Binding="{Binding Quantity, StringFormat='#,0.0000'}" ClipboardContentBinding="{x:Null}" Header="Quantity"> <DataGridTextColumn.CellStyle> <Style TargetType="DataGridCell" > <Setter Property="HorizontalAlignment" Value="Right" /> </Style> </DataGridTextColumn.CellStyle> </DataGridTextColumn> |
<DataGridTextColumn Binding="{Binding Quantity, StringFormat='#,0.0000'}" ClipboardContentBinding="{x:Null}" Header="Quantity"> <DataGridTextColumn.CellStyle> <Style TargetType="DataGridCell" > <Setter Property="HorizontalAlignment" Value="Right" /> </Style> </DataGridTextColumn.CellStyle> </DataGridTextColumn>
But this gives a bad side-effect when you select a row in your DataGrid:
To avoid this, instead of using CellStyle, you can apply ElementStyle targeting to TextBlock, which holds the text in DataGridTextColumn:
1 2 3 4 5 6 7 | <DataGridTextColumn Binding="{Binding Quantity, StringFormat='#,0.0000'}" ClipboardContentBinding="{x:Null}" Header="Quantity"> <DataGridTextColumn.ElementStyle> <Style TargetType="{x:Type TextBlock}"> <Setter Property="TextAlignment" Value="Right" /> </Style> </DataGridTextColumn.ElementStyle> </DataGridTextColumn> |
<DataGridTextColumn Binding="{Binding Quantity, StringFormat='#,0.0000'}" ClipboardContentBinding="{x:Null}" Header="Quantity"> <DataGridTextColumn.ElementStyle> <Style TargetType="{x:Type TextBlock}"> <Setter Property="TextAlignment" Value="Right" /> </Style> </DataGridTextColumn.ElementStyle> </DataGridTextColumn>
That works nicely:
Happy coding!