DataGrid Row Hintergrund basierend auf Zellenwert

7

Ich arbeite gerade an einem C # -WPF-Datagrid. Ich habe ein DataGrid mit automatisch generierten Spalten, und der Code stellt eine Verbindung zu einer SQLite-Datenbank her und erstellt ein Dataset. Anschließend wird dieses Dataset als DataGrid ItemsSource festgelegt.

Unten ist der Code mit dem XAML des DataGrid

%Vor%

Und unten ist der Code zum Festlegen der ItemsSource für das DataGrid

%Vor%

Die Spalten, die in der Datenbank angezeigt werden (automatisch generiert), sind ID, Datum, Uhrzeit und Status. Was ich tun muss, ist, wenn der Wert in einer Zeile der Statusspalte gleich Error ist, ändere die Hintergrundfarbe dieser Zeile.

Ich gehe davon aus, dass ich innerhalb der DataGrid-Tags eine Reihe von Styling-Tags und DataTriggern hinzufügen muss, aber nicht sicher bin, was ich brauche. Alles, was ich an dem Code versucht habe, der die ItemsSource setzt, zeigt einen Fehler an, der besagt, dass die Source leer sein muss, bevor die ItemsSource hinzugefügt wird.

Vielen Dank für Ihre Hilfe.

    
Boardy 11.09.2011, 22:29
quelle

1 Antwort

19

Sie können dazu einen DataTrigger verwenden.

Hier ist ein schnelles Beispiel. Ich habe eine Klasse namens Person mit den Eigenschaften Name, Age und Active erstellt.

%Vor%

Im Konstruktor des Hauptfensters füge ich 3 Person -Objekte zu einer Liste hinzu und verbinde diese Liste dann mit dem DataGrid .

%Vor%

Dann erstelle ich im XAML für das MainWindow einen DataTrigger Style als Ressource.

%Vor%

Dieser Trigger bewirkt, dass der Wert aus dem Active -Feld vom Person -Objekt in DataGridRow übernommen wird, und wenn dieser Wert false ist, wird die Hintergrundfarbe der Zeile in rot geändert.

    
Ryan Alford 12.09.2011, 12:38
quelle

Tags und Links