This example illustrates how to align a column content in WPF DataGrid by enabling TextAlignment and VerticalAlignment properties
You can change the content alignment of GridColumn using TextAlignment and VerticalAlignment properties.
<syncfusion:SfDataGrid x:Name="dataGrid"
AutoGenerateColumns="False"
ItemsSource="{Binding Orders}">
<syncfusion:SfDataGrid.Columns>
<syncfusion:GridTextColumn MappingName="OrderID"
HeaderText="Order ID"
TextAlignment="Left"
VerticalAlignment="Center"/>
<syncfusion:GridTextColumn MappingName="CustomerID"
HeaderText="Customer ID"
TextAlignment="Center"
VerticalAlignment="Center"/>
<syncfusion:GridTextColumn MappingName="CustomerName"
HeaderText="Customer Name"
TextAlignment="Center"
VerticalAlignment="Center"/>
<syncfusion:GridTextColumn MappingName="Country"
HeaderText="Country"
TextAlignment="Center"
VerticalAlignment="Center"/>
<syncfusion:GridTextColumn MappingName="ShipCity"
HeaderText="Ship City"
TextAlignment="Right"
VerticalAlignment="Center"/>
</syncfusion:SfDataGrid.Columns>
</syncfusion:SfDataGrid>
You can change the auto generating columns alignment by using the AutoGeneratingColumn event.
this.dataGrid.AutoGeneratingColumn += DataGrid_AutoGeneratingColumn;
private void DataGrid_AutoGeneratingColumn(object sender, Syncfusion.UI.Xaml.Grid.AutoGeneratingColumnArgs e)
{
e.Column.TextAlignment = TextAlignment.Center;
e.Column.VerticalAlignment = VerticalAlignment.Center;
}
You can change the column header alignment using HorizontalHeaderContentAlignment property.
<syncfusion:SfDataGrid x:Name="dataGrid"
AutoGenerateColumns="False"
ItemsSource="{Binding Orders}">
<syncfusion:SfDataGrid.Columns>
<syncfusion:GridTextColumn MappingName="OrderID"
HeaderText="Order ID"
HorizontalHeaderContentAlignment="Left"/>
<syncfusion:GridTextColumn MappingName="CustomerID"
HeaderText="Customer ID"
HorizontalHeaderContentAlignment="Center"/>
<syncfusion:GridTextColumn MappingName="CustomerName"
HeaderText="Customer Name"
HorizontalHeaderContentAlignment="Center"/>
<syncfusion:GridTextColumn MappingName="Country"
HeaderText="Country"
HorizontalHeaderContentAlignment="Center"/>
<syncfusion:GridTextColumn MappingName="ShipCity"
HeaderText="Ship City"
HorizontalHeaderContentAlignment="Right"/>
</syncfusion:SfDataGrid.Columns>
</syncfusion:SfDataGrid>
You can change the column header alignment for auto generating columns by using the AutoGeneratingColumn event.
this.dataGrid.AutoGeneratingColumn += DataGrid_AutoGeneratingColumn;
private void DataGrid_AutoGeneratingColumn(object sender, Syncfusion.UI.Xaml.Grid.AutoGeneratingColumnArgs e)
{
e.Column.HorizontalHeaderContentAlignment = HorizontalAlignment.Center;
}
You can customize the background and foreground colors for GridColumn.
<syncfusion:SfDataGrid x:Name="dataGrid"
AutoGenerateColumns="False"
ItemsSource="{Binding Orders}">
<syncfusion:SfDataGrid.Columns>
<syncfusion:GridTextColumn MappingName="OrderID"
HeaderText="Order ID">
<syncfusion:GridTextColumn.CellStyle>
<Style TargetType="syncfusion:GridCell">
<Setter Property="Background" Value="Bisque" />
<Setter Property="Foreground" Value="Green"/>
</Style>
</syncfusion:GridTextColumn.CellStyle>
</syncfusion:GridTextColumn>
<syncfusion:GridTextColumn MappingName="CustomerID"
HeaderText="Customer ID"/>
<syncfusion:GridTextColumn MappingName="CustomerName"
HeaderText="Customer Name"/>
<syncfusion:GridTextColumn MappingName="Country"
HeaderText="Country"/>
<syncfusion:GridTextColumn MappingName="ShipCity"
HeaderText="Ship City"/>
</syncfusion:SfDataGrid.Columns>
</syncfusion:SfDataGrid>
You can customize the foreground and background color of the GridColumn content based on condition.
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
<Window.Resources>
<local:ColorConverter x:Key="converter"/>
</Window.Resources>
<Grid>
<syncfusion:SfDataGrid x:Name="dataGrid"
AutoGenerateColumns="False"
ItemsSource="{Binding Orders}">
<syncfusion:SfDataGrid.Columns>
<syncfusion:GridTextColumn MappingName="OrderID"
HeaderText="Order ID">
<syncfusion:GridTextColumn.CellStyle>
<Style TargetType="syncfusion:GridCell">
<Setter Property="Background" Value="{Binding Path=OrderID,Converter={StaticResource converter}}"/>
</Style>
</syncfusion:GridTextColumn.CellStyle>
</syncfusion:GridTextColumn>
<syncfusion:GridTextColumn MappingName="CustomerID"
HeaderText="Customer ID"/>
<syncfusion:GridTextColumn MappingName="CustomerName"
HeaderText="Customer Name"/>
<syncfusion:GridTextColumn MappingName="Country"
HeaderText="Country"/>
<syncfusion:GridTextColumn MappingName="ShipCity"
HeaderText="Ship City"/>
</syncfusion:SfDataGrid.Columns>
</syncfusion:SfDataGrid>
</Grid>
public class ColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int input = (int)value;
//custom condition is checked based on data.
if (input % 2 == 0)
return new SolidColorBrush(Colors.LightBlue);
else
return new SolidColorBrush(Colors.Bisque);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Visual Studio 2015 and above versions