none
Hola tengo el siguiente problema, al abrir un usercontrol desde otro proyecto RRS feed

  • Pregunta

  • Tengo una aplicación que solamente la pude lograr con SilverLight y no la he podido traspasar a WPF debido que esa dll no funciona para WPF

    yo abro los user control de la solución principal de la siguiente manera.

     

     

      InitializeComponent();
       List<string> userControlKeys = new List<string>();
       userControlKeys.Add("Welcome");
       userControlKeys.Add("IngresarPaciente");
       userControlKeys.Add("Galeria");
       userControlKeys.Add("FichaMedica");
       userControlKeys.Add("AgendaSemanal");
       userControlKeys.Add("AgendaMensual");
       Type type = this.GetType();
       Assembly assembly = type.Assembly;
       foreach (string userControlKey in userControlKeys)
       {
        string userControlFullName = String.Format("{0}.AppPages.{1}", type.Namespace, userControlKey);
        UserControl userControl = (UserControl)assembly.CreateInstance(userControlFullName);
        _userControls.Add(userControlKey, userControl);
       }
       // set the default page
       btnFichaMedica.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
    

     


    El problema que me surge es que si quiero abrir otro user control de otro provecto dentro de la misma solución es imposible.

    Obviamente remplacé el namespace y trate de varias formas pero aun no he logrado nada

     

    Saludos y gracias por su tiempo

    viernes, 22 de julio de 2011 19:58

Respuestas

Todas las respuestas

  • ¡Hola!

     

    Vaya, que cosa más curisosa que haces.

    ¿Cada Item lo consideras un Usercontrol?

    Bueno, tu problema creo que lo tienes aqui:  UserControl userControl = (UserControl)assembly.CreateInstance(userControlFullName). En las llamadas en otro proyecto no modificas el FullName del control por lo que tomas uno que ya esta instanciado.

     

    Espero haberte ayudado. Un saludo,

     

    viernes, 22 de julio de 2011 20:20
  • Hola, esta aplicación abre varios usercontrol dentro un panel el cual se llama por distintos botones que tienen la misma función Click pero con Tag distintos

    El código completo es el siguiente

     

     public MainWindow()
        {
          InitializeComponent();
          List<string> userControlKeys = new List<string>();
          userControlKeys.Add("Welcome");
          userControlKeys.Add("IngresarPaciente");
          userControlKeys.Add("Galeria");
          userControlKeys.Add("FichaMedica");
          userControlKeys.Add("AgendaSemanal");
          userControlKeys.Add("AgendaMensual");
          Type type = this.GetType();
          Assembly assembly = type.Assembly;
          foreach (string userControlKey in userControlKeys)
          {
            string userControlFullName = String.Format("{0}.AppPages.{1}", type.Namespace, userControlKey);
            UserControl userControl = (UserControl)assembly.CreateInstance(userControlFullName);
            _userControls.Add(userControlKey, userControl);
          }
          // set the default page
          btnFichaMedica.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
        }
    
        private void btnGeneral_Click(object sender, RoutedEventArgs e)
        {
          PanelMainContent.Children.Clear();
          MenuItem button = (MenuItem)e.OriginalSource;
          // PanelMainWrapper.Header = button.Content;
          Type type = this.GetType();
          Assembly assembly = type.Assembly;
    
          PanelMainContent.Children.Add(_userControls[button.Tag.ToString()]);
        }
    


    Al entrar en el Main windows inicilializa todos los user control pero necesito llamar otro UserControl desde otro poryecto

    creo que se deberia modificar aqui 

    string userControlFullName = String.Format("{0}.AppPages.{1}", type.Namespace, userControlKey);
    

    Obviamente cambio el Namespace para que tome el namespace de la otra aplicación pero aun nada quizas necesito ademas incluirle el nombre de la otra solución o no

    Saludos.

    viernes, 22 de julio de 2011 20:36
  • ¡Hola!

     

    Pon un punto de ruptura en la línea:   string userControlFullName = String.Format("{0}.AppPages.{1}", type.Namespace, userControlKey);

    Si type.Namespace es el mismo para ambos casos el string que se forma es el mismo. Igual debe de ser el mismo. Si es así debes de modificar el string userControlKey.

    Y otro en la línea:   PanelMainContent.Children.Add(_userControls[button.Tag.ToString()]);


    De esta te interesa saber que recibe el tag. Aqui debes de agregar un control que exista asi que debe de tener congruencia el código ;-).

     

    Saludos,

    viernes, 22 de julio de 2011 21:22
  • Este codigo me funciona si yo lo trabajo en el mismo proyecto pero si quiero llamar el usercontrol de otro proyecto no sucede nada incluso si cambio este codigo y lo dejo asi

    string userControlFullName = String.Format("{namespace_del_otro_proy}.AppPages.{nombre_del_user_control_del_otro_proy}");

     

    Saludos

    viernes, 22 de julio de 2011 21:26
  • ¡Hola!

    ¿Y no arroja ningún error? . ¿Estan bien referenciados los proyectos?. ¿Por separados te permite compilarlos?. ¿Tiene que ver esta pregunta con la que has formulado posteriormente o son preguntas independientes?

    Saludos

    sábado, 23 de julio de 2011 6:39
  • Si me funciona bien sin problema la aplicacion que esta en silverlight  incluso la puedo ver  con otro proyecto que esta en la misma solucion que es asp.net puedo con wpf ver esa pagina

    En ves de mostrar el usercontrol asi

    Ok No

    Silverlight (usercontrol) ------> WPF

    Sea de esta manera 

    OK OK ¿Se puede?

    Silverlight (usercontrol) ------> ASP.Net------> WPF

     

    Es el medio recorrido pero se podria ver?

    En la solución estaria conformada por 3 proyecto lo otro es que si adjunto el namespace del proyecto asp.net no tengo problema lo unico que no se si se puede mostrar dentro del wpf o por lo menos abrir la pagina dentro del WPF

     

    Saludo y muchas gracias por su tiempo.

    sábado, 23 de julio de 2011 15:41
  • ¡Hola!

     

    Un proyecto de Silverlight es "incompatible" con uno de WPF aunque emplean comportamientos y clases parecidas no son iguales. Un control creado para silverlight no puede ser compilado en WPF y viceversa: http://social.msdn.microsoft.com/forums/es-es/wpfes/thread/9C73C462-21CB-49DE-BEAE-1CF076A60B49

    http://devblog.ailon.org/devblog/post/2009/11/02/Writing-WPFSilverlight-compatible-code-Part-1-The-Big-Picture.aspx

    Que puedes hacer. Pasarlo a mano. Similar a lo que te muestran en esta entrada de blog:

    http://thinkingindotnet.wordpress.com/2008/04/27/parte-8-crear-la-version-de-escritorio-con-wpf/

    O puedes crearte un marco o ventana en WPF donde ejecutar tu control silverlight. Esta respuesta en el foro te puede ser útil.

    http://social.msdn.microsoft.com/Forums/es-ES/wpfes/thread/1c7fab12-809c-4fc8-9d54-8c777f2e6382/

     

    Un saludo,

     

     

     

    • Marcado como respuesta Ricardo_1984 sábado, 23 de julio de 2011 20:57
    sábado, 23 de julio de 2011 20:00