Сетка данных Silverlight: изменение стилей ячеек на основе значений - PullRequest
3 голосов
/ 18 декабря 2008

У меня есть некоторые данные. Я хочу просмотреть эти данные и изменить ячейки (например, цвет фона), если эти данные удовлетворяют определенному условию. Так или иначе, я не смог понять, как сделать эту, казалось бы, простую вещь в Silverlight.

Ответы [ 3 ]

5 голосов
/ 18 декабря 2008

Это немного старый код (до RTM), но он делает то, что вы ищете. Он проверяет некоторые данные об объекте в строке, а затем соответственно устанавливает цвет строки.

XAML:

<my:DataGrid x:Name="Grid" Grid.Row="1" Margin="5" GridlinesVisibility="None" PreparingRow="Grid_PreparingRow">
    <my:DataGrid.Columns>
        <my:DataGridTextBoxColumn 
            DisplayMemberBinding="{Binding Cheese}" 
            Header="Cheese"></my:DataGridTextBoxColumn>
        <my:DataGridTextBoxColumn 
            DisplayMemberBinding="{Binding Biscuit}" 
            Header="Biscuit"></my:DataGridTextBoxColumn>
    </my:DataGrid.Columns>
</my:DataGrid>

Код:

this.Grid.AlternatingRowBackground = null; 

private void Grid_PreparingRow(object sender, DataGridRowEventArgs e)
{
    CheesyClass c = e.Row.DataContext as CheesyClass;
    if (c != null && c.Cheese == "cheddar")
    {
       e.Row.Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 125, 125));
    }
}
1 голос
/ 12 января 2009

На самом деле это не будет работать во всех примерах. Смотрите эти ссылки для «правильного» способа достижения этого

http://silverlight.net/forums/p/27465/93474.aspx#93474

http://silverlight.net/forums/t/27467.aspx

0 голосов
/ 23 января 2009

Я обычно писал собственные ValueConverters для каждого связываемого типа данных, которые возвращают видимость, цвет и т. Д.

Это дает единственную точку, где определены правила настройки, и я считаю, что работает очень хорошо.

Вторая ссылка Робина описывает написание пользовательского ValueConverter.

...