Je suis en train d'afficher un ensemble de données à l'aide d'un DataTemplate
dans un ItemsControl
, avec l'ensemble ItemsPanel
comme une grille uniforme de taille 3 x 3. La ItemsSource
du ItemsControl
est défini pour lier à un CollectionViewSource
qui filtre la collection source en fonction d'un terme de recherche. Tout cela fonctionne très bien.WPF Comment fixer un montant maximal de résultats de CollectionViewSource
La liste que je suis se lier à est d'une taille arbitraire, mais je veux seulement 9 résultats à afficher, mais je ne peux pas pour la vie de me trouver comment soit:
a) limiter la CollectionViewSource
à sortie les 9 premiers articles
b) limiter le UniformPanel
à seulement 3 x 3 et ne jamais créer de nouvelles lignes
c) limiter le ItemsControl
pour permettre seulement de créer 9 modèles de données à la fois.
Je me gratte vraiment la tête parce que je suis sûr que c'est un scénario commun de databinding mais je ne trouve rien sur le web à ce sujet.
Basé sur la réponse de cwap, j'ai complètement abandonné CollectionViewSource et créé simplement une liste principale et une liste filtrée dans le modèle de vue, cette dernière étant mise à jour lorsque le terme de recherche change. Utiliser un convertisseur est une bonne idée et probablement plus "pure" MVVM que d'inclure le nombre maximum de sorties dans la VM (pourquoi je l'ai marqué comme réponse), mais pour l'instant je suis content de le faire dans la VM. Salutations pour les réponses tous. – Guy