Ich habe eine ComboBox in einer WPF-Anwendung, die an eine ObservableCollection von Department-Objekte in einer C# ViewModel-Klasse gebunden ist. Ich möchte das Kombinationsfeld verwenden, um eine andere Sammlung nach Abteilung zu filtern (und in der Tat funktioniert das jetzt) Das Problem ist, dass ich eine zusätzliche Option "Alle" an den Anfang der Liste hinzufügen möchte. Gibt es einen richtigen Weg, dies zu tun? Eine falsche Abteilung zu manipulieren fühlt sich in vielerlei Hinsicht falsch an.Wie fügen Sie ein generisches Element zu einer ComboBox an eine Auflistung in WPF
Die ComboBox
<ComboBox ItemsSource="{Binding Path=Departments}"
SelectedValue="{Binding Path=DepartmentToShow , Mode=TwoWay}" />
+1 Wow als erfahrener WPF-Programmierer war mir nicht einmal "CompositeCollection" bewusst! Bei der Suche im Internet gibt es alle möglichen Problemumgehungen, aber keine erwähnen dies! Unglaublich ... –
Ja, als ich das las, war ich erstaunt. Ich habe heute Morgen ein bisschen darüber nachgedacht und ich denke, dass es den Trick machen wird. Im Moment wird die Filterung im Aufbau der Linq-Abfrage durchgeführt, also denke ich, dass ich nach 'All' testen kann und wenn das nicht ausgewählt ist, iteriere die peopleCollection. In der Zukunft plane ich Refactoring und benutze eine CollectionViewSource, um die Ansicht ohne Requerying zu filtern; Ich bin mir nicht sicher, wie das funktionieren würde, aber für diese Frage habe ich meine Antwort. Danke! –
@Aviad Ja, es ist eine nette Lösung, eine Sache, die ein wenig saugt, ist, dass Sie nicht über DataContext an die Collection-Eigenschaft binden können, da CompositeCollection nicht Freezable ist. Dies kann man umgehen, indem man an eine statische Ressource bindet ... –