Как программно изменить цвет строки сетки данных в WPF? - PullRequest
1 голос
/ 17 февраля 2011

Мне было интересно, если это возможно. У меня эта таблица данных содержит 3 столбца и 2 строки. Я хочу изменить фон столбца URL в моей таблице данных в соответствии с данными, которые я ввожу.

Вот пример моего кода xaml:

<DataGrid
    x:Name="mylistview"
    BorderBrush="#FF373737"
    Background="Black"
    VerticalGridLinesBrush="#FF232323"
    HorizontalGridLinesBrush="#FF212121">
    <DataGrid.Columns>
        <DataGridTextColumn Header="URL" Foreground="{Binding rowColor}" Binding="{Binding url}"/>
        <DataGridTextColumn Header="Version" Foreground="White" Binding="{Binding version}"/>
        <DataGridTextColumn Header="Valid" Foreground="White" Binding="{Binding valid}"/>
    </DataGrid.Columns>
</DataGrid>

Мой класс заполнял сетку данных строками:

public class myData
{
    public string url {get; set;}
    public string version{get; set;}
    public string valid{get; set;}

    //this should be the value that changes the bg color 
    public string rowColor{ get; set; }
}

А вот мой способ добавить строки в элемент управления:

 myData data1 = new myData();
 data1.url = "http://google.com";
 data1.valid = "yes";
 data1.version = "1";
 data1.rowColor = "#FF000000";
 this.mylistview.Items.Add(data1);

 data1.url = "http://yahoo.com";
 data1.valid = "no";
 data1.version = "1";
 data1.rowColor = "#000000FF";
 this.mylistview.Items.Add(data1);

У меня есть два элемента. Каждый ряд должен иметь свой цвет. Первый должен быть красным а второй должен быть синим. Я действительно не знаю, как заставить элемент управления использовать значение rowColor.

Что мне нужно сделать, чтобы это работало?

1 Ответ

3 голосов
/ 17 февраля 2011

Ваш rowColor не должен возвращать строку (я бы переименовал ее в RowColor, поскольку она общедоступна), вместо этого просто верните фактические цветные кисти. (Кстати, ваши цвета ошибочны, первый непрозрачный черный, а второй прозрачный синий)

, например

public Brush rowColor { get; set; }
data1.rowColor = Brushes.Red;
data2.rowColor = Brushes.Blue;

Если вам действительно нужно проанализировать строку, вы можете использовать конвертер значений или стандартное преобразование, используемое при разборе Xaml.

Кроме того, я не уверен, будет ли работать привязка этих свойств к Foreground столбца.

...