Как программно установить цвет фона строки для WPG DataGrid (WPF & C #) на основе значения в DataGrid - PullRequest
1 голос
/ 16 августа 2010

У меня есть таблица данных WPF, связанная со списком объектов интерфейса.Учтите, что класс ClsEmployee реализует интерфейс I_Employee со свойствами Empl_Id, Empl_Name, Department, Address и City_name.

List _emplList;

считайте, _emplList имеет 10 элементов.

dgEmployeeGrid.Itemsource= _emplList;

Вопрос: Теперь, если пользователь нажимает кнопку, я должен прочитать название города.Основываясь на названии города, я должен быть в состоянии установить цвет (цвет может быть различным для каждой строки) для строк динамически с помощью кода C #.

Пожалуйста, помогите мне, как это сделать?

Заранее спасибо!

1 Ответ

2 голосов
/ 16 августа 2010

Создайте ValueConverter , который принимает "значение" соответствующего типа в сетке, а затем привязывает цвет фона строки к этому полю с помощью ValueConverter, чтобы обеспечить Цветная кисть или любая другая кисть (которая имеет смысл), которую вы хотели бы положить туда.

EDIT

Вот конвертер, который преобразует bool в цвет кисти. Этот класс имеет два свойства с именами «True» и «False», которые мы устанавливаем в Brush, которые будут использоваться, когда логическое значение соответствует свойству. Преобразователь является односторонним и не преобразует кисти обратно в логические значения.

XAML для создания экземпляра конвертера и установки свойств

<cga:BoolToBrushConverter x:Key="trueIsGreen" 
    True="Green" 
    False="Red"/>

Код преобразователя C #

[ValueConversion(typeof(bool), typeof(Brush))]
public class BoolToBrushConverter : IValueConverter
{
    public Brush True
    {
        get; set;
    }

    public Brush False
    {
        get; set;
    }

    public object Convert(object value, Type targetType, 
                          object parameter, CultureInfo culture)
    {
        if (targetType != typeof(Brush))
        {
            return null;
        }

        return ((bool) value) ? True : False;
    }

    public object ConvertBack(object value, Type targetType, 
                              object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Пример значения привязки и преобразования в поле объекта, который принимает кисти

<Ellipse Width="10" Height="10" 
       Fill="{Binding Path=Reviewer.IsMentor, Mode=OneWay, 
                      Converter={StaticResource trueIsGreen}}"/>

Я предполагаю, что вы знакомы с привязкой данных в WPF и не будете подробно останавливаться на этом аспекте решения, но когда значение Reviewer.IsMentor истинно, конвертер предоставит "зеленую" кисть (отправленную при создании конвертера) в свойство Fill эллипса.

...