У меня есть элемент управления DataGrid WPF, который использует пользовательскую раскраску как для строк данных, так и для отдельных ячеек данных. Некоторые строки должны быть окрашены, но есть также отдельные ячейки, которые должны показывать определенный цвет независимо от цвета фона их строки. Я обработки расцветки, как это:WPF DataGrid Coloring - пользовательская раскраска для обоих строк и ячеек
<DataGrid.Resources>
<!--Row Coloring-->
<Style TargetType="DataGridRow" >
<Style.Triggers>
<DataTrigger Binding="{Binding IsInactive}" Value="True">
<Setter Property="Background" Value="DarkGray" />
</DataTrigger>
</Style.Triggers>
</Style>
<!--Cell Coloring-->
<local:ColorConverter_RunToday x:Key="converter_RunToday"/>
<Style TargetType="DataGridCell" >
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Column.Header}" Value="Run Today">
<Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text, Converter={StaticResource converter_RunToday}}"/>
<Setter Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text, Converter={StaticResource converter_RunToday}}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
Моего цвета конвертер класс:
public class ColorConverter_RunToday : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string str = value.ToString().Trim().ToUpper();
if (str == "YES")
return Brushes.LightGreen;
return Brushes.Transparent;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Единственная проблема с этой установкой является то, что «Run Сегодня» ячейка с таможенной окраской никогда не будет иметь цвет фона строки. Настройка цвета на Brushes.Transparent по-прежнему просто окрашивает ячейку белого цвета, если текст ячейки не является «YES». Кроме того, когда у меня есть эта строка, выбранная ячейка не получает нормальный синий цвет подсветки.
Я ранее получил решение для работы, индивидуально окрашивая каждую ячейку программным способом вместо использования XAML, но при прокрутке отображался не корректно, если я не отключил виртуализацию строк в сетке. Это приведет к тому, что он будет ужасно работать на сетке, содержащей большое количество данных.
Почему клетки окрашены в зеленый цвет покажет серый? Разве это не то, что вы хотите? Также, пожалуйста, напишите snaphsot, каково это и как вы хотите. –
Если фон окрашен в серый цвет, но ячейка «Выполнить сегодня» - «Да», я хочу, чтобы вся строка была серой, но одна ячейка была зеленой. В противном случае я хочу, чтобы вся строка была серой, включая ячейку «Run Today». Прямо сейчас, ячейка «Run Today» всегда будет либо зеленой, либо белой, а не серой. – Rett
Я пробовал ваш код в образце. Первая точка работает полностью в моем конце. Можете ли вы попробовать его в небольшом образце, чтобы увидеть, находится ли проблема где-то в другом коде. Если он по-прежнему сохраняется, попробуйте разместить здесь образец кода, чтобы мы могли помочь. –