Tengo un ComboBox en una aplicación WPF que está vinculada a un ObservableCollection de objetos Departamento en una clase C# ViewModel. Quiero usar el cuadro combinado para filtrar otra colección por departamento (y de hecho funciona ahora). El problema es que quiero agregar una opción adicional "Todos" al principio de la lista. ¿Hay una forma correcta de hacer esto? Hacer un departamento falso se siente mal de muchas maneras.Cómo agregar un elemento genérico a un ComboBox vinculado a una colección en WPF
El ComboBox
<ComboBox ItemsSource="{Binding Path=Departments}"
SelectedValue="{Binding Path=DepartmentToShow , Mode=TwoWay}" />
+1 ¡Wow como experimentado programador de WPF ni siquiera estaba al tanto de 'CompositeCollection'! Hay todo tipo de soluciones para esto cuando se busca en Internet, ¡pero ninguno menciona esto! Increíble ... –
Sí, cuando lo leí me sorprendió. He estado investigando esta mañana y creo que hará el truco. En este momento, el filtrado se realiza en la construcción de la consulta de Linq, así que estoy pensando que puedo probar "Todos" y, si eso no está seleccionado, repito iteración de PeopleCollection. En el futuro, estaba planeando refactorizar y usar un CollectionViewSource para filtrar la vista sin necesidad de volver a consultar; No estoy seguro de cómo funcionaría, pero para esta pregunta tengo mi respuesta. ¡Gracias! –
@Aviad sí, es una buena solución, una cosa que apesta un poco es que no se puede unir a la propiedad Collection a través de DataContext ya que CompositeCollection no es Freezable. Esto puede resolverse mediante el enlace a un recurso estático ... –