none
WP7, Blend y Origen de Datos RRS feed

  • Pregunta

  •  

    Saludos a todo, me surge un problema a la hora de trabajar con Blend para realizar un proyecto en Windows Phone 7. He creado una aplicación WCF con su correspondiente modelo (clase de objetos). Dicho modelo lo añado en el origen de datos de Blend mediante "Crear origen de datos de objeto..." sin dificultad, llamada DatosDataSource. Una vez añadido, voy arrastrando los objetos, añadiendo elementos a la pantalla, etc.

    Ahora en el code-behind añado lo siguiente para obtener los datos:

    ServiceReference.ServicioDatosClient servicio = new ServicioDatosClient();
    servicio.obtenerDatosCompleted += new EventHandler<obtenerDatosGenericosCompletedEventArgs>(servicio_obtenerDatosCompleted);
    servicio.obtenerDatosAsync();

     

            void servicio_obtenerDatosCompleted(object sender, obtenerDatosCompletedEventArgs e)
            {
                ServicioDatosClient servicio = e.UserState as ServicioDatosClient;
                datos = e.Result[0];
                //¿¿¿¿¿¿¿¿¿¿ cómo aplico los datos ahora a los elementos ????????????
            }

     

    Una vez que tengo los datos desde e.Result[0],

    ¿cómo añado los datos a los controles que ya tienen el Binding usando DatosDataSource?

    ¿Para qué sirve realmente el origen de datos creado en Blend llamado DatosDataSource?

     

     

    Saludos y gracias.



    • Editado Jorge AR lunes, 28 de noviembre de 2011 1:21
    lunes, 28 de noviembre de 2011 1:20

Todas las respuestas

  • Hola! No estoy aun muy puesto en SL, pero a ver si te puedo ayudar en algo que ya me estuve peleando yo con esto ayer jeje.

    Cuando te salta el evento Completed se te va a la funcion servicio_obtenerDatosCompleted. En esta funcion el valor de e.Result es exactamente lo que devuelve tu webservice WCF.

    Lo que ya quieras hacer con ello lo tendrías que explicar algo más.

    Si por ejemplo devolviera un entero, podrías hacer directamente:

    int dato = e.Result;
    


    O si por ejemplo devuelves una lista del mismo tipo que los datos que hayas definido en un listbox, puedes hacer tambien:

    listbox.ItemSource = e.Result;
    


    Como te digo, ya es segun lo que te devuelva el webservice y lo que quieras hacer con ello.

     

    Un saludo!

    lunes, 28 de noviembre de 2011 16:28
  • En primer lugar, darte las gracias por tú respuesta Emilio.

    Te comento, el problema no radica en qué devuelve el método .....Completed con su e.Result ya que eso depende de lo que tenga establecido en el servicio WCF, es decir el contrato (si no me equivoco).

    La duda me surge con el DatosDataSource.

     

    Saludos.

    lunes, 28 de noviembre de 2011 22:07
  • Hola Jorge,

    igual alguien tiene una respuesta más exacta porque yo no controlo mucho el Blend, pero con esta herramienta puedes crear orígenes de datos "no reales" para poder trabajar con tus controles y realizar los Bindings simulando el entorno final mientras diseñas.

    Si examinas el XAML que te genera, fíjate en la propiedad DataContext de los controles del mismo (ó en la propiedad DataContext de la página). Es en esos controles donde tienes que cambiar el DataContext por el resultado de lo que te devuelve el servicio WCF.

    Esto lo puedes hacer directamente en el code-behind (p.ej <control>.DataContext = e.result) o usando algún patrón como MVVM (del que se ha hablado en el foro o puedes encontrar información en el MSDN).

    No sé si esto responde a tus dos preguntas, pero repito que igual existe otra forma de usar en ejecución ese DataSource y cambiarlo por lo que te viene en el servicio, pero la desconozco.

    Espero que te sirva de ayuda.

    Saludos

     


    @ayus
    lunes, 28 de noviembre de 2011 22:31