Bonjour,

Je suis confronté au problème suivant.

J'ai 3 datagrid. Les 2 premières affichent respectivement des produits et des catégories de produits, la troisième affiche des objets qui contiennent; entre autres, une propriété Produit et une propriété Catégorie.
Je voudrais maintenant pouvoir filtrer les produits et la catégories indépendamment à l'aide de 2 textboxs. Pour cela, j'écris le code suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
var view = CollectionViewSource.GetDefaultView(dg.DataContext);
view.Filter = y => ((Entity) y).Name.ToLower().Contains(txt);
Jusqu'à la pas de problème...
Je voudrais à présent que ma troisième datagrid soit aussi filtrée quand l'une au moins des 2 autres datagrid est filtrée. Le critère de filtrage pour cette troisième datagrid est que l'instance contenue dans la propriété Produit passe le filtre appliqué sur les produits ou que l'instance contenue dans la propriété Catégorie passe le filtre sur les catégories.
Tout le problème est de rendre ce troisième filtrage efficace car il doit se faire en même temps que les 2 autres.
Je pourrais ajouter une propriété Visible au entité métier Produit et Catégorie que je set lors du filtrage des 2 premières datagrid. Il faudrait ensuite pour chaque ligne de la 3 datagrid que je regarde si au moins une des 2 est visible.
Mais cette solution ne me plait pas trop car je modifie ici la couche métier alors qu'il faudrait plutôt travailler sur la vue pour résoudre un tel problème...

Auriez-vous quelque chose de plus élégant et efficace à me proposer ?

Merci d'avance pour vos conseils.