Для создания единого стиля для ячеек DataGrid в WPF, можно использовать стиль ячейки по умолчанию и задать его в ресурсы приложения. В этом стиле можно определить общие свойства для всех ячеек, такие как шрифт, выравнивание текста, цвет текста и т. д.
Пример стиля для ячеек DataGrid:
```xml
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="LightGray"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
```
Для улучшения кода и избежания дублирования в определении стиля фона ячейки для каждой колонки таблицы, можно использовать конвертер значений. В конвертере можно задать логику определения цвета фона ячейки в зависимости от значений в ней.
Пример конвертера для определения цвета фона ячейки в зависимости от значения:
```csharp
public class BackgroundColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((int)value < 0)
{
return Brushes.Red;
}
else
{
return Brushes.Transparent;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
```
Далее, можно применить конвертер в стиле ячейки для определенной колонки таблицы:
```xml
<DataGridTextColumn Header="Value" Binding="{Binding Value}">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="{Binding Value, Converter={StaticResource BackgroundColorConverter}}"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
```
Таким образом, с помощью конвертера можно определить цвет фона ячейки в зависимости от значений в ней, избежав дублирования кода для каждой колонки таблицы.