Zone de liste déroulante de filtrage en WPF avec MVVM
Je développe une application en utilisant WPF mvvm approche.
J'ai une exigence où je dois afficher une liste d'éléments dans une liste déroulante pour la sélection.
Basé sur certains flag-je besoin pour filtrer quelques articles de la liste déroulante pour la sélection.
J'ai essayé d'utiliser les deux éléments différents sources avec la liste complète et l'autre avec liste filtrée et basé sur le drapeau j'ai voulu changer la source des éléments.
Cela ne semble pas bien fonctionner. Est-il un moyen facile d'appliquer des filtres sur la liste existante basée sur certaines drapeau ?
- Ce qui ne fonctionne pas? Vous avez besoin d'ajouter plus de détails et le code qui ne fonctionne pas.
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de façons différentes de le faire, mais ma préférence personnelle est d'utiliser un
ListCollectionView
que l'ItemsSource du contrôle de l'affichage de la liste filtrée, pour définir un prédicat de filtre surListCollectionView.Filter
et d'appelerListCollectionView.Refresh
lorsque le filtre de changement de paramètres.L'exemple ci-dessous permettra de filtrer une liste de pays sur la base de leur continent.
Code
XAML
Bien que votre question n'est pas claire, mais je pense que vous n'avez pas besoin de conserver les deux liste juste pour obtenir le filtre de données. Vous pouvez utiliser LINQ simple de faire le filtrage. Supposons que si vous avez un ViewModel de la Propriété comme
Et que vous souhaitez filtrer que, sur la base de certaines valeurs bool ensuite, vous pouvez écrire quelque chose comme
Statut peut être le booléen basé sur ce que vous voulez filtrer vos données, et vous pouvez ajouter ce bool à l'intérieur de votre ComboBoxItem classe.
ItemSource
de la combo?