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?
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%Andere können von diesem WPF "Dynamic Data Triggers" im Code hinter der Methode
profitierenMit 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.