Bonjour,
Je cherche à savoir comment faire pour filtrer ma ListCollectionView avec plusieurs critères de filtrage.
Mon application est en WPF 4.0 et implémente le pattern MVVM Prism.
J'ai un DataGrid qui affiche plusieurs messages avec au dessus des boutons pour filtrer les messages selon un type.
J'ai une classe Message avec une propriété énumérée Type {Alert, Admin, Error, ...} que j'utilise comme critère de filtre.
L'ItemSource de mon DataGrid est une ListCollectionView contenant une liste de Message.
Voici mon implémentation du filtrage :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 //Déclaration de ma commande public DelegateCommand FilterCommand { get; private set; } //Affectation à ma commande de la méthode Filter dans le constructeur FilterCommand = new DelegateCommand(Filter); //Charge la vue par défaut de ma collection DataItems private void Filter() { ICollectionView collectionView = CollectionViewSource.GetDefaultView(DataItems); collectionView.Filter = ExecFilter; } //Applique le filtre //DataItem est de type Message private bool Filter(object item) { DataItem dataItem = item as DataItem; return (dataItem.Type.Equals(MessageTypes.Alert)); }
Avec ce mécanisme, je n'arrive à filtrer qu'un type à la fois (en l’occurrence Alert). Je voudrais que pour chaque filtre actif, mon DataGrid affiche tous mes Message appartenant à l'un des filtres sélectionnés.
Y a t'il un moyen de placer la liste de mes filtres dans une collection et de demander de filtrer sur cette collection de critères ?
Merci d'avance pour vos réponses !
Partager