La couleur d'arrière-plan par défaut d'une ligne sélectionnée dans DataGrid est si sombre que je ne peux pas la lire. Y a-t-il moyen de le contourner?
J'ai essayé ça
<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>
Mais toujours rien ...
Réponses:
La solution ci-dessus a laissé une bordure bleue autour de chaque cellule dans mon cas.
C'est la solution qui a fonctionné pour moi. C'est très simple, ajoutez simplement ceci à votre
DataGrid
. Vous pouvez le changer de aSolidColorBrush
à n'importe quel autre pinceau tel qu'un dégradé linéaire.la source
<DataGrid>ItemsSource="{Binding Path=MySelector}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
la ligne est uniquement LightGrey. Existe-t-il également un SystemColors? ´SystemColors.ControlBrushKey
.Je l'ai. Ajoutez ce qui suit dans la section DataGrid.Resources:
la source
BorderBrush
reste bleu, s'il ennuie quelqu'un, ajoutez simplement un autreSetter
élément, qui définit laBorderBrush
propriété de dépendance sur la même couleur (valeur) que leBackground
lui - même.En complément de la réponse de @Seb Kade, vous pouvez contrôler entièrement les couleurs des lignes sélectionnées et non sélectionnées en utilisant les éléments suivants
Style
:Vous pouvez bien sûr saisir les couleurs que vous préférez. Cela
Style
fonctionnera également pour d'autres éléments de collection tels queListBoxItem
s (si vous remplacezTargetType="{x:Type DataGridRow}"
parTargetType="{x:Type ListBoxItem}"
par exemple).la source
Color
propriété du troisièmeSolidColorbrush
dans mon exemple en la couleur que vous aimez. L'utilisation de cette déclaration est en fait la définition de la couleur deSolidColorbrush
celleSystemColors.HighlightTextBrushKey
utilisée. Attention cependant à ne pas avoir défini laForeground
couleurStyle
ailleurs car cela peut remplacer les paramètresResources
ci - dessus.SystemColors.InactiveSelectionHighlightBrushKey
, ou la ligne sera mise en surbrillance lorsque la grille perd le focusJ'ai eu ce problème et j'ai failli m'arracher les cheveux, et je n'ai pas pu trouver la réponse appropriée sur le net. J'essayais de contrôler la couleur d'arrière-plan de la ligne sélectionnée dans un WPF DataGrid. Cela ne le ferait tout simplement pas. Dans mon cas, la raison était que j'avais également un CellStyle dans ma grille de données, et que CellStyle a remplacé le RowStyle que je définissais. Fait intéressant, car CellStyle ne définissait même pas la couleur d'arrière-plan, qui était à la place définie par les propriétés RowBackground et AlternateRowBackground. Néanmoins, essayer de définir la couleur d'arrière-plan de la ligne sélectionnée n'a pas du tout fonctionné lorsque j'ai fait cela:
et cela a fonctionné lorsque j'ai déplacé le style souhaité pour la ligne sélectionnée hors du style de ligne et dans le style de cellule, comme ceci:
Il suffit de poster ceci au cas où quelqu'un aurait le même problème.
la source
Le déclencheur IsSelected par défaut modifie 3 propriétés, Background, Foreground & BorderBrush. Si vous souhaitez modifier la bordure ainsi que l'arrière-plan, incluez-le simplement dans votre déclencheur de style.
la source
Certaines des raisons pour lesquelles j'ai rencontré l'événement sélectionné par ligne ne fonctionnaient pas
C'est ce qui m'a aidé. Définition du style de DataGridCell
Et comme j'utilisais une colonne de modèle avec une étiquette à l'intérieur, j'ai lié la propriété Foreground au conteneur Foreground à l'aide de la liaison RelativeSource:
la source
J'ai essayé ControlBrushKey mais cela n'a pas fonctionné pour les lignes non sélectionnées. L'arrière-plan de la ligne non sélectionnée était toujours blanc. Mais j'ai réussi à découvrir que je dois remplacer le style de ligne.
la source
J'ai passé la majeure partie de la journée à tripoter ce problème. Il s'est avéré que la propriété RowBackground sur le DataGrid - que j'avais définie - remplaçait toutes les tentatives de modification. Dès que je l'ai supprimé, tout a fonctionné. (Il en va de même pour le premier plan défini dans DataGridTextColumn, au fait).
la source