Comment définir la grille de données de la ligne de Fond, basé sur la valeur d'une propriété à l'aide de liaisons de données
Dans mon code XAML, je veux mettre le Background
couleur de chaque ligne, basé sur la valeur de l'objet dans une ligne spécifique. J'ai un ObservableCollection
de z
, et chaque de la z
a une propriété appelée State
. J'ai commencé avec quelque chose comme ça dans mon DataGrid
:
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background"
Value="{Binding z.StateId, Converter={StaticResource StateIdToColorConverter}}"/>
</Style>
</DataGrid.RowStyle>
C'est une mauvaise approche, car x n'est pas une propriété dans ma classe ViewModel.
Dans ma classe ViewModel j'ai un ObservableCollection<z>
qui est le ItemsSource
de cette DataGrid
, et un SelectedItem
de type z
.
J'ai pu lier la couleur de SelectedItem
, mais cela ne fera que changer une ligne dans le DataGrid
.
Comment puis-je, basée sur un changement de propriété de cette lignes backgroundcolor?
Vous devez vous connecter pour publier un commentaire.
Utiliser un
DataTrigger
:'State' property not found on 'object' ''z' (HashCode=7162954)'. BindingExpression:Path=State; DataItem='z' (HashCode=7162954); target element is 'DataGridRow' (Name=''); target property is 'NoTarget' (type 'Object')
Howcome qu'il ne trouve pas la Propriété de l'État lors de mon entité détient cette, et ma base de données indique l'État comme une colonne?z.State
.enum
valeur. Cette réponse sur StackOverflow m'a aidé avec ça.public
La même chose peut être fait sans
DataTrigger
trop:Où
BooleanToBrushConverter
est la classe suivante:En XAML, ajouter et définir une RowStyle Propriété de la grille de données avec un objectif de définir le arrière-plan de la Ligne, à la de la Couleur définie dans mon Objet Employé.
Et dans ma Classe Employé
De cette façon, chaque Ligne de la grille de données a la Couleur d'arrière-plan de la
ColorSet
Propriété de mon Objet.