none
Problema con los ComboBox - no enseñan el valor elegido RRS feed

  • Pregunta

  • Hola a todos, sigo teniendo problemas con algunos de los combos que están asociados a datos de la base de datos, no todos por lo que veo me pasa en los que apuntan con SelectedValuePath a un código de tipo entero, creí haberlo solucionado con IsSynchronizedWithCurrentItem="True" por así consigues que pinte, pero no pinta el que corresponde sino el primero de las lista asociada a ItemSource, entiendo que debe estar ligado a algún problema u opción del Binding, he parado la ejecución justo en el momento del Binding y veo que la variable asociada a SelectedItem tiene el valor correcto como se puede ver en la imagen que acompaño, pero a pesar de contener el valor no lo pinta, ¿se os ocurre el porque?

    (lo siento la imagen no aparece)


    • Editado fjjcent sábado, 25 de julio de 2015 10:04
    sábado, 25 de julio de 2015 10:02

Todas las respuestas

  • He encontrado una posible solución para ganar tiempo, se que es una chapuza, pero presento aplicación el jueves y no puedo presentarme con la mitad de los combos fallando, se que el problema está ligado a temas de momento de los eventos, es decir que al producirse el binding aún no se dispone del dato y luego llega el dato y ya es tarde, y en eso me he basado para solucionarlo, lo que no sé es porque no ocurre en todos los combos.

    Explico mi solución chapuza, basándome en que el binding al cambiar el dato dispara un evento cuando se le indica que lo haga, y he accedido desde ese evento al Datacontext (que ya tiene el valor valido) y al propio combo a nivel de objeto (no por nombre, crearía un bucle) y simplemente le establezco la propiedad Text y funciona, a menos que me aportéis algo distinto eso será lo que use, con todo creo que WPF tiene una laguna en esto pues hay miles de mensajes preguntando lo mismo. Explico la solución por si le vale a alguien

    1) hacer que el combo dispare el evento  ->   SelectedItem="{Binding profagrupada,NotifyOnTargetUpdated=True}"

    2) Crear el evento  -> TargetUpdated="cmbProf_TargetUpdated

    3)cambiarle el texto al combo

    private void cmbProf_TargetUpdated(object sender, DataTransferEventArgs e) {
        var n = (AlbergadoViewModel)DataContext;
        var x = (ComboBox)e.Source;
        x.Text = n.profagrupada.desprofagrup;
     }

    a ver si se os ocurre algo distinto, también he probado a hacer un binding con el Text pero también esta plagado de gente que no le funciona.

    un saludo

    sábado, 25 de julio de 2015 12:48