2010-06-23 4 views
0

Je travaille avec MVVM et WPF.WPF ListView Couleur de fond de la rangée

VM contient -

  1. une collection Observable de tâches (où la tâche est une classe qui a des propriétés publiques TaskId, TaskTime et TaskDetails)
  2. currentTaskId

Je peux définir la couleur d'arrière-plan chaque ligne en utilisant l'une des méthodes ci-dessous

  1. en utilisant ListView ItemContainerSty le déclencheur ou
  2. utilisant ListView ItemContainerStyleSelector

Maintenant, je veux définir la couleur d'arrière-plan de toutes les lignes à LightBlue et la condition étant Task.TaskId == VM.CurrentTaskId. Comment puis-je réaliser cela?

J'échoué à mettre en œuvre à l'aide de la gâchette de données sur le style, car

<DataTrigger Binding="{Binding TaskId}" Value="1001"> 

est valide, mais en utilisant Binding pour la valeur est non valide, quelque chose sur les lignes de

<DataTrigger Binding="{Binding TaskId}" Value="{Binding CurrentTaskId}"> 

Je suis en mesure implémenter la couleur de ligne alternative et une couleur spécifique pour certaines lignes en utilisant le StyleSelector, mais encore une fois comment trouver l'CurrentTaskId?

De même comment pourrais-je implémenter la fonctionnalité pour changer la couleur de fond chaque fois que le CurrentTaskId change?

Répondre

0

résolu ce problème en utilisant IMultiValueConverter et MultiBinding

1

Vous devriez essayer d'utiliser plusieurs contraignant dans votre déclencheur de données.

Voir cette question pour une solution similaire - WPF DataTrigger - Setting ListBoxItem IsSelected

+0

Oui, c'est exactement comme je l'ai résolu. Voir ma réponse ci-dessus. Merci pour le lien +1 – byte

Questions connexes