J'ai une zone de liste déroulante dans une application WPF qui est liée à un objet ObservableCollection of Department dans une classe C# ViewModel. Je veux utiliser la zone de liste déroulante pour filtrer une autre collection par département (Et en effet cela fonctionne pour cela maintenant) Le problème est que je veux ajouter une option supplémentaire "Tous" en haut de la liste. Y a-t-il un moyen correct de le faire? Faire un faux département se sent mal à bien des égards.Comment ajouter un élément générique à une zone de liste déroulante liée à une collection dans WPF
Le ComboBox
<ComboBox ItemsSource="{Binding Path=Departments}"
SelectedValue="{Binding Path=DepartmentToShow , Mode=TwoWay}" />
+1 Wow en tant que programmeur WPF expérimenté, je n'étais même pas au courant de 'CompositeCollection'! Il existe toutes sortes de solutions de contournement pour cela lors de la recherche sur Internet, mais aucune mention de cela! Incroyable ... –
Ouais quand j'ai lu ceci j'ai été étonné. J'y ai fait des recherches ce matin et je pense que ça va faire l'affaire. Pour le moment, le filtrage est fait dans la construction de la requête Linq, donc je pense que je peux tester 'All' et si cela n'est pas sélectionné, itérer the peopleCollection. À l'avenir, je prévoyais de refactoriser et d'utiliser une CollectionViewSource pour filtrer la vue sans requérir; Je ne sais pas comment cela fonctionnerait, mais pour cette question, j'ai ma réponse. Je vous remercie! –
@Aviad oui c'est une bonne solution, une chose qui ne vous plaît pas, c'est que vous ne pouvez pas vous lier à la propriété Collection via DataContext car CompositeCollection n'est pas Freezable. Cela peut être travaillé en liant à une ressource statique ... –