2008-12-18 91 views

回答

5

这是稍微旧的代码(来自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)); 
    } 
} 
+0

这似乎是有意义的改变整个行的颜色值转换器。是对的吗? – 2009-12-11 04:36:07

0

我一般写定制ValueConverters每个数据类型的限制是回报可见性,颜色等

的“正确”的方式

这给出了定义自定义规则的单一点,并且我发现其工作得很好。

Robin的第二个链接描述了编写自定义ValueConverter。

相关问题