Die Standardhintergrundfarbe einer ausgewählten Zeile in DataGrid ist so dunkel, dass ich sie nicht lesen kann. Gibt es überhaupt eine Möglichkeit, es zu überschreiben?
Versuchte dies
<dg:DataGrid.RowStyle>
<Style TargetType="{x:Type dg:DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="Background" Value="Gainsboro" />
</Trigger>
</Style.Triggers>
</Style>
</dg:DataGrid.RowStyle>
Aber immer noch nichts ...
Antworten:
Die obige Lösung hat in meinem Fall einen blauen Rand um jede Zelle hinterlassen.
Dies ist die Lösung, die für mich funktioniert hat. Es ist sehr einfach, fügen Sie dies einfach zu Ihrem hinzu
DataGrid
. Sie können es von einemSolidColorBrush
zu einem anderen Pinsel ändern, z. B. einem linearen Farbverlauf.quelle
<DataGrid>ItemsSource="{Binding Path=MySelector}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
die Datenbindung auswähle, ist die Zeile beispielsweise nur LightGrey. Gibt es auch ein SystemColors? ´SystemColors.ControlBrushKey
.Verstanden. Fügen Sie im Abschnitt DataGrid.Resources Folgendes hinzu:
quelle
BorderBrush
blau bleibt, wenn es jemanden nervt, fügen Sie einfach ein weiteresSetter
Element hinzu, das dieBorderBrush
Abhängigkeitseigenschaft auf dieselbe Farbe (Wert) wie dasBackground
selbst setzt.Als Erweiterung der Antwort von @Seb Kade können Sie die Farben der ausgewählten und nicht ausgewählten Zeilen wie folgt vollständig steuern
Style
:Sie können natürlich die von Ihnen bevorzugten Farben eingeben. Dies
Style
wird auch für andere Kollektionsteile arbeiten wieListBoxItem
s (wenn Sie ersetzenTargetType="{x:Type DataGridRow}"
mitTargetType="{x:Type ListBoxItem}"
zum Beispiel).quelle
Color
Eigenschaft des drittenSolidColorbrush
in meinem Beispiel auf die gewünschte Farbe ändern . Durch die Verwendung dieser Deklaration wird tatsächlich die FarbeSolidColorbrush
derSystemColors.HighlightTextBrushKey
verwendeten Deklaration festgelegt . Achten Sie jedoch darauf, dass Sie dieForeground
Farbe nicht an einer anderenStyle
Stelle eingestellt haben, da dies dieResources
obigen Einstellungen überschreiben kann .SystemColors.InactiveSelectionHighlightBrushKey
, oder die Zeile wird hervorgehoben, wenn das Raster den Fokus verliertIch hatte dieses Problem und riss mir fast die Haare aus, und ich konnte im Internet keine passende Antwort finden. Ich habe versucht, die Hintergrundfarbe der ausgewählten Zeile in einem WPF DataGrid zu steuern. Es würde es einfach nicht tun. In meinem Fall war der Grund, dass ich auch einen CellStyle in meinem Datagrid hatte und der CellStyle den von mir eingestellten RowStyle überschrieb. Interessanterweise, weil der CellStyle nicht einmal die Hintergrundfarbe festlegte, die stattdessen durch die Eigenschaften RowBackground und AlternateRowBackground festgelegt wurde. Der Versuch, die Hintergrundfarbe der ausgewählten Zeile festzulegen, funktionierte dabei jedoch überhaupt nicht:
und es hat funktioniert, als ich den gewünschten Stil für die ausgewählte Zeile aus dem Zeilenstil in den Zellenstil verschoben habe, wie folgt:
Posten Sie dies einfach, falls jemand das gleiche Problem hat.
quelle
Der Standard-IsSelected-Trigger ändert drei Eigenschaften: Hintergrund, Vordergrund und BorderBrush. Wenn Sie sowohl den Rand als auch den Hintergrund ändern möchten, fügen Sie dies einfach in Ihren Stilauslöser ein.
quelle
Einige der Gründe, aus denen ich festgestellt habe, dass das in der Zeile ausgewählte Ereignis nicht funktioniert
Das hat mir geholfen. Festlegen des Stils für DataGridCell
Und da ich eine Vorlagenspalte mit einer Beschriftung darin verwendet habe, habe ich die Foreground-Eigenschaft mithilfe der RelativeSource-Bindung an den Container Foreground gebunden:
quelle
Ich habe ControlBrushKey ausprobiert, aber es hat bei nicht ausgewählten Zeilen nicht funktioniert. Der Hintergrund für die nicht ausgewählte Zeile war noch weiß. Aber ich habe es geschafft herauszufinden, dass ich den Rowstyle überschreiben muss.
quelle
Ich habe den größten Teil eines Tages damit verbracht, mich mit diesem Problem zu beschäftigen. Es stellte sich heraus, dass die von mir festgelegte RowBackground-Eigenschaft im DataGrid alle Versuche überschrieb, sie zu ändern. Sobald ich es gelöscht habe, hat alles funktioniert. (Gleiches gilt übrigens auch für den in DataGridTextColumn festgelegten Vordergrund).
quelle