J'ai quelques données. Je veux parcourir ces données et changer les cellules (par exemple - Couleur de fond), si ces données répondent à une certaine condition. D'une certaine manière, je n'ai pas été capable de comprendre comment faire cette chose apparemment facile dans Silverlight.Silverlight Datagrid: Modification des styles de cellule, en fonction des valeurs
3
A
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));
}
}
1
En fait, cela ne fonctionnera pas dans tous les exemples. Voir ces liens pour la « bonne » façon d'y parvenir
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é.
Cela semble logique sur un convertisseur de valeur ou pour changer la couleur de la ligne entière. Est-ce correct? –
Note: LoadingRow est le nouveau nom de PreparingRow –