none
WPF - Problema con UserControl y DataBinding. RRS feed

  • Pregunta

  • Buenos Dias Developer's!

    Tengo un problemita, y acontinuacion lo detallo:

    1) Estoy haciendo una aplicacion en WPF, esta aplicacion, tiene la funcion de poder abrir multiples TabItems estilo Visual Studio y/o SQL Management Studio.

    2) Cuando agrego un TabItems Nuevo, dentro de ese TabItem Agrego un UserControl, para que el usuario interactue con ese control para una funcion especifica.

    3) Dentro de este UserControl se encuentran algunos ComboBox y un Data Grid que los agregue desde la ventana de "Data Source" del IDE de Visual Studio.

    EL PROBLEMA...
    4) Cuando se ejecuta la aplicacion no se encuentra ningun TabItem en mi TabControl, preciono el boton de "NUEVO" para agregar el TabItem deseado (Que contiene los ComboBox y el DataGrid), y resulta que no aparecen los datos relacionados al ComboBox ni al DataGrid...

    5) Coloco estos mismos controles, en la pagina principal (Por Prueba), para asi descartar que sea el Binding... y efectivamente! funciona! no hay ningun problema si los controles se cargan con la pagina principal, pero si esta dentro de un UserControl, que este se agrega dinamicamente, no aparecen datos en los controles.

    Quisiera saber, si hay algun metodo como  DataBind() (como en ASP.NET) para llamar los datos.

    Espero su respuesta, antes de todos muchas gracias!
    MSDN es lo mejor!  DISFRUTEN DEL NUEVO VISUAL STUDIO 2010 Ya salio el Release! :D ;)

    Saludos! :P


    Marca la respuesta como correcta si te es util. MCPD - Web Developer MCTS - .Net Framework 2.0, Web Applications, SQL Server 2005
    jueves, 15 de abril de 2010 13:58

Respuestas

  • Hola Mariajose.

    Como el binding se realiza al interpretar el xaml, si el usercontrol se crea dinamicamente, se debe realizar el binding tambien dinamicamente, puedes hacerlo mediante codigo con algo como esto:

    Binding bind = new Binding();
    bind.XPath = @"/DocumentElement/ArbolTareas";
    listView1.SetBinding(ListView.ItemsSourceProperty, bind);

    esto asignaria un binding de un xml a un listView (propiedad ItemSource).

     

     

     


    Saludos
    David González
    • Marcado como respuesta Mariojose Palma viernes, 16 de abril de 2010 15:04
    jueves, 15 de abril de 2010 19:32
  • Hola MariaJosé.

    Si obtienes los datos en una tabla, puedes hacerlo de la siguiente forma:

          Binding bind = new Binding();
          bind.Source = data;   
          dataGrid1.SetBinding(DataGrid.ItemsSourceProperty, bind);

    donde 'data' es un DataTable o cualquier otro objeto fuente con los datos.

     

     

     

     


    Saludos
    David González
    • Marcado como respuesta Mariojose Palma viernes, 16 de abril de 2010 15:04
    viernes, 16 de abril de 2010 7:27

Todas las respuestas

  •  
    Marca la respuesta como correcta si te es util. MCPD - Web Developer MCTS - .Net Framework 2.0, Web Applications, SQL Server 2005
    jueves, 15 de abril de 2010 14:08
  • Hola Mariajose.

    Como el binding se realiza al interpretar el xaml, si el usercontrol se crea dinamicamente, se debe realizar el binding tambien dinamicamente, puedes hacerlo mediante codigo con algo como esto:

    Binding bind = new Binding();
    bind.XPath = @"/DocumentElement/ArbolTareas";
    listView1.SetBinding(ListView.ItemsSourceProperty, bind);

    esto asignaria un binding de un xml a un listView (propiedad ItemSource).

     

     

     


    Saludos
    David González
    • Marcado como respuesta Mariojose Palma viernes, 16 de abril de 2010 15:04
    jueves, 15 de abril de 2010 19:32
  • Buenas Tardes David.

    Agradezco tu respuesta, pero tengo una duda, Yo estoy consultando a una Base de Datos en SQL Server...
    Como haria en ese caso?

    Gracias David, Espero tu respuesta
    Saludos!


    Marca la Respuesta como correcta si te es util.
    MCPD - Web Developer
    MCTS - .Net Framework 2.0, Web Applications, SQL Server 2005
    jueves, 15 de abril de 2010 19:52
  • Hola MariaJosé.

    Si obtienes los datos en una tabla, puedes hacerlo de la siguiente forma:

          Binding bind = new Binding();
          bind.Source = data;   
          dataGrid1.SetBinding(DataGrid.ItemsSourceProperty, bind);

    donde 'data' es un DataTable o cualquier otro objeto fuente con los datos.

     

     

     

     


    Saludos
    David González
    • Marcado como respuesta Mariojose Palma viernes, 16 de abril de 2010 15:04
    viernes, 16 de abril de 2010 7:27
  • David Gonzalez!!

    Muchisimas GRACIAS!! :D Ya pude solucionar el problema!! tal vez eso era algo basico :P pero el cambio de paradigmas en desarrollo de Windows Form y ASP.NET a  WPF y Silverlight es un poquito fuerte :P pero me estoy adaptando ;)!!

    Todas las repuestas fueron Correctas!

    Saludos!


    Marca la Respuesta como correcta si te es util.
    MCPD - Web Developer
    MCTS - .Net Framework 2.0, Web Applications, SQL Server 2005
    viernes, 16 de abril de 2010 15:03