Hintergrundfarbe der WPF-Datagrid-Zelle mit Trigger

8

Ich möchte, dass die Hintergrundfarbe einer WPF-Datagrid-Zelle die Farbe ändert, wenn der Inhalt geändert wurde. Jede Zelle enthält ein ViewModel-Objekt, das die folgenden Eigenschaften enthält: Value, OriginalValue und Modified. Wenn der Benutzer den Zelleninhalt bearbeitet, löst dies automatisch die Amount-Eigenschaft über die Datenbindung aus. Dieser Property-Setter prüft dann den ursprünglichen Wert und setzt die boolesche Modified-Eigenschaft auf true bzw. false und benachrichtigt die Bindungen über die zu aktualisierenden Eigenschaften.

Ich habe bisher mit einem Style auf der ElementStyle-Eigenschaft der DataGridTextColumn wie folgt ein partielles Ergebnis erzielt:

%Vor%

Dies aktualisiert die Texthintergrundfarbe, aber das ist nur ein kleiner Bereich in der Mitte der Zelle. Ich möchte, dass die gesamte Zelle ihre Hintergrundfarbe aktualisiert, nicht nur das Textblock-Attribut.

Kann ich den oben genannten Auslöser so ändern, dass er im visuellen Baum nach oben sucht, um ein übergeordnetes DataGridCell zu finden und die Background-Eigenschaft darauf einzustellen, anstatt nur die Hintergrundfarbe des aktuellen Textblocks festzulegen?

    
NZJames 07.11.2013, 16:42
quelle

2 Antworten

17

Sie müssen CellStyle auf DataGridCell setzen und nicht nur auf TextBlock .

Wenn Sie möchten, dass dieser dataTrigger für alle Zellen in Ihrem dataGrid angewendet wird, legen Sie den Stil für DataGrid CellStyle fest, andernfalls können Sie dies auch für DataGridTextColumn CellStyle tun.

DataGrid

%Vor%

DataGridTextColumn

%Vor%     
Rohit Vats 07.11.2013, 19:56
quelle
4

Andere können von diesem WPF "Dynamic Data Triggers" im Code hinter der Methode

profitieren

Mit diesem Code können Benutzer Datenzeilen mit dem gewünschten Text markieren.

%Vor%
  • Der Parameter CurrentTextToFilter des Textes, den der Benutzer in eine XAML Textbox.Text-Eigenschaft eingegeben hat, die an den dahinter liegenden Code gebunden war.

  • Die Variable XDG ist der Datagrid-XAML-Name und der RowStyle ist auf den neuen Stil eingestellt.

  • Stellen Sie sicher, dass Sie den Setter wie gezeigt zum DataTrigger hinzufügen. Wenn Sie es direkt zum Rowstyle hinzufügen, werden alle Zeilen rot angezeigt.
John Peters 29.08.2015 06:10
quelle

Tags und Links