Estoy tratando de implementar una selección de cuadro combinado con CollectionViewSource. Este cuadro combinado es en realidad parte de una plantilla de datos y se repite en una vista de lista. Mi primer enfoque pareció funcionar (utilizando CollectionViewSource) pero todos mis cuadros combinados compartían el mismo contexto de datos. Esto hizo que cada vez que se cambiara una de las otras cajas, todas las demás cambiaran para reflejar, no un efecto secundario deseado.Encuadernación con CollectionViewSource
Decidí simplemente retroceder e intentar implementar un cuadro combinado básico (no dentro de una plantilla de datos) usando xaml en línea para especificar CollectionViewSource (en lugar de crear los cvs como un recurso estático). No he podido mostrar mis datos con éxito. Probablemente estoy haciendo esto completamente mal ya que todavía soy nuevo en WPF.
Aquí está el XAML para mi cuadro combinado:
<ComboBox>
<ComboBox.ItemsSource>
<Binding>
<Binding.Source>
<CollectionViewSource Source="{Binding Path=Configurations}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="AgencyName" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Binding.Source>
</Binding>
</ComboBox.ItemsSource>
</ComboBox>
El DataContext del control de usuario, donde vive está ligado a un objeto que tiene una ObservableCollection llamada Configuraciones este cuadro combinado y cada configuración tiene una propiedad llamada AgencyName . He verificado que esto funciona bien usando enlaces estándar sin los cvs, así que sé que todo está bien en ese acuerdo.
Cualquier ayuda sería muy apreciada ya que me he quedado sin excusas para mi jefe :). Tampoco quiero tener que desplegarme en el código y hacer la clasificación en el código subyacente (que podría cuando construyo el ObservableCollection pero en mi humilde opinión que viola el principio DRY).
Ah IsSynchronizedWithCurrentItem funciona como un amuleto. No se sincroniza con la lista y no impide el enlace a una propiedad en ModelView. Acabo de terminar de verificar eso. Resuelve mi problema con elegancia. No puedo pedir más, gracias. – SRM
Eres el hombre, pensé que me topaba con una limitación de WPF que requería el uso de una copia de toda la fuente de visión para el engendro de cada plantilla. Sería difícil incluso google/describir el problema. –
PD. Es bastante extraño que este sea el comportamiento predeterminado de WPF, o al menos predeterminado en las plantillas, pero bueno. –