2008-12-18 8 views

Répondre

5

Ceci est un code légèrement ancien (d'avant RTM), mais fait quelque chose comme ce que vous cherchez. Il vérifie certaines données sur un objet dans une rangée, puis définit la couleur de la ligne en conséquence.

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> 

code:

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

Cela semble logique sur un convertisseur de valeur ou pour changer la couleur de la ligne entière. Est-ce correct? –

+3

Note: LoadingRow est le nouveau nom de PreparingRow –

0

J'ai généralement écrit ValueConverters personnalisés pour chaque type de données étant lié que la visibilité de retour, couleur, etc.

Cela donne un seul point où les règles de personnalisation sont définies et j'ai trouvé très bien fonctionne.

La deuxième liaison de Robin décrit l'écriture d'un ValueConverter personnalisé.

Questions connexes