llenar change and wpf xbap

wpf - change - Misterioso borde rojo aparece alrededor de ComboBox



wpf combobox change (5)

Asegúrese de que todo lo que esté vinculando sea del tipo de datos esperado.

Tenía este ''cuadro rojo misterioso'' cuando había enlazado a una lista de objetos decimal pero mi tipo de propiedad MVVM era int . Verifique y vuelva a verificar todas sus propiedades SelectedValue , DisplayMemberPath y SelectedValuePath si las está utilizando, y asegúrese de que no esté usando SelectedValue cuando pretendía usar SelectedItem .

Busque en la consola de depuración errores de enlace para algo como esto:

System.NotSupportedException: Int32Converter cannot convert from System.Decimal

System.Windows.Data Error: 7 : ConvertBack cannot convert value ''7'' (type ''Decimal''). BindingExpression:Path=SharedProductHistoryFilterCriteria.FilterDays; DataItem=''PricingManagerViewModel'' (HashCode=19425465); target element is ''ComboBox'' (Name=''''); target property is ''SelectedValue'' (type ''Object'') NotSupportedException:''System.NotSupportedException: Int32Converter cannot convert from System.Decimal. at MS.Internal.Data.DefaultValueConverter.ConvertHelper(Object o, Type destinationType, DependencyObject targetElement, CultureInfo culture, Boolean isForward) at MS.Internal.Data.ObjectTargetConverter.ConvertBack(Object o, Type type, Object parameter, CultureInfo culture) at System.Windows.Data.BindingExpression.ConvertBackHelper(IValueConverter converter, Object value, Type sourceType, Object parameter, CultureInfo culture)''

Tengo una aplicación WPF, una XBAP, con un ComboBox en la página principal. Cuando selecciono un elemento en el ComboBox, un controlador de eventos reconstruye una colección que es la fuente de datos para un cuadro de lista. Parece cosas bastante simples, todas las cosas que he hecho antes en WPF.

Este es el aspecto de mi menú desplegable después de seleccionar un elemento de la lista:

¿De dónde diablos vino la frontera roja? Estoy creando el formulario desde cero, no hay ningún estilo ni nada en él en este momento. El texto "rojo" ni siquiera se menciona en ninguna parte del proyecto. No desaparecerá una vez que aparezca, y se mostrará sobre cualquier cosa que coloque encima del control.

Aquí está el marcado:

<ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Converter={StaticResource ResourceKey=DeviceInfoNameConverter}}"></TextBlock> </DataTemplate> </ComboBox.ItemTemplate>

Algunos detalles más:

  • Esta es una aplicación XBAP que se ejecuta en IE8
  • Otros controles desplegables en la misma página no hacen esto
  • El borde desaparece cuando intento examinar el árbol de control con Snoop
  • El convertidor no es la fuente del problema, he intentado enlazar directamente a una propiedad en el objeto subyacente y el cuadro sigue apareciendo.

Mi única suposición tan lejos de la búsqueda es que hay algún tipo de plantilla de error predeterminada que se aplica al control. Estoy trabajando con WIA, y hay varias excepciones de COM que aparecen en la ventana de salida de VS, aparentemente relacionadas con el enlace de datos para el ListView. El origen de datos del control es un objeto WIA.DeviceInfo, el convertidor solo obtiene la propiedad de nombre para el texto desplegable.


¿Su valor seleccionado no debe ser un miembro de la colección y no la colección de carpetas? es decir, Folders.Folder.ID o algo por el estilo?

Entonces, su fuente CB itemsSource sería Folders y selectedItem sería Folder y selectedValue sería Name ??????

debe actualizar SelectedValue a un miembro de una colección. Además, deberá especificar ItemsSource = {Binding Path = Folders} "t. Luego deberá especificar DisplayMemberPath y SelectedValuePath.

Yo probaría cada enlace por separado. Primero, pruebe el enlace para IsEnabled eliminando cada enlace para la colección de elementos si está habilitado / deshabilitado como se seleccionó, luego comience a probar el enlace para la colección.


Parece que es simplemente un problema de tipo de reparto. Para mi caso, el SelectedIndex estaba vinculado a una propiedad de tipo Enum y el establecedor de esa propiedad nunca fue llamado. Solo tuve que convertir explícitamente el valor devuelto al tipo correcto tanto en Convert como en ConvertBack de mi convertidor.


Tuve el mismo problema. Resultó ser una falta de coincidencia de datos. El elemento seleccionado del cuadro combinado se asignó a una cadena y el valor seleccionado a un byte. Una vez que convertí ambos a la cadena, estaba funcionando como se esperaba.


Yo también tuve el mismo problema, luego cambié los tipos de datos tanto de SelectedItem como de ItemsSource para que sean el doble. Antes, tenía la lista de int para ItemsSource y el doble para SelectedItem. Funciona.