Foros del Web » Programación para mayores de 30 ;) » .NET »

WPF: Cargo vía MEF un UserControl. Como acceder desde el UC a un Recurso del App??

Estas en el tema de WPF: Cargo vía MEF un UserControl. Como acceder desde el UC a un Recurso del App?? en el foro de .NET en Foros del Web. Hola foreros, Espero haber sido más o menos claro con el título, jeje. Espero podáis ayudarme, por que veo que es más complicado de lo ...
  #1 (permalink)  
Antiguo 25/04/2014, 12:37
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
WPF: Cargo vía MEF un UserControl. Como acceder desde el UC a un Recurso del App??

Hola foreros,

Espero haber sido más o menos claro con el título, jeje. Espero podáis ayudarme, por que veo que es más complicado de lo que creía...

Les explico:

Tengo tres proyectos (Abrevio nombres.):
- HSoft.Common (Contiene entidades con sus INotificationProperty y demás..)
- HSoft.Clients (Libreria con UserControls.xaml)
- HSoft.Main (Aplicacion principal)

1-. Ejecuto la App principal, donde, añado a los recursos un modelo del tipo Usuario.
Código:
App.Current.Resources.Add("contextCurrentUser", new UserModel());
2.- La app principal también carga, por MEF, los UserControl del assembly de HSoft.Clients.dll

3.- Desde mi App princpal, puedo acceder desde Xaml, sin ningún problema al recurso del usuario creado.
Código:
Binding Source={StaticResource contextCurrentUser}

4.- Desde mi assembly HSoft.Clients.. ¿Como puedo hacer lo mismo? Si lo intento desde Xaml, al cargar el assembly me dice que no encuentra el recurso: No se puede encontrar el recurso con el nombre 'contextCurrentUser'. Y desde código... al ser un proyecto de tipo librería, no veo ninguna opción para acceder al recurso mediante: App.Current.Resources["mirecurso"]

Hay alguna forma de decirle que busque el recurso en el assembly que lo ha cargado en memoria ?? No sé como solucionar este problema, pero... cualquier cosa o idea, les agradecería que me dijeran. No sé que más hacer...

Gracias por molestaros en leer el post. :)
__________________
Charlie.
  #2 (permalink)  
Antiguo 25/04/2014, 17:39
Avatar de giovani_loera  
Fecha de Ingreso: mayo-2011
Ubicación: Tijuana
Mensajes: 225
Antigüedad: 13 años, 6 meses
Puntos: 21
Respuesta: WPF: Cargo vía MEF un UserControl. Como acceder desde el UC a un Recurso d

Un saludo

ESto lo he hecho con WPF

POrque no agregas una propiedad al App.xaml

Código C#:
Ver original
  1. public static Common.Common.User UserLogin
  2.         {
  3.             //bueno aqui pones lo que quieres regresar
  4.             get { return Provider.DataProvider.Orchestrator.UserPrperty; }
  5.         }

Y para accesar a la propiedad seria asi:

Código C#:
Ver original
  1. //Esto lo puedes hacer desde cualquier parte del programa
  2. Common.Common.User myuser=App.UserLogin;

ESpero que te sirva
  #3 (permalink)  
Antiguo 26/04/2014, 06:54
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Respuesta: WPF: Cargo vía MEF un UserControl. Como acceder desde el UC a un Recurso d

Hola Giovani_loera, gracias por tu respuesta, pero... no entiendo bien lo que dices.

El problema es que desde la .DLL no tengo acceso a App (Ya que es una .dll), y tampoco tengo acceso a ninguna propiedad de mi aplicacion principal (.exe) ya que no tiene ninguna referencia a esta.
__________________
Charlie.
  #4 (permalink)  
Antiguo 26/04/2014, 07:59
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Respuesta: WPF: Cargo vía MEF un UserControl. Como acceder desde el UC a un Recurso d

La idea es la siguiente..

En mi .EXE cargo el siguiente recurso desde el App.cs :
Código:
App.Current.Resources.Add("contextCurrentUser", new UserModel());

Y desde mi .dll quiero intentar recuperar ese recurso. He mirado e intentado lo siguiente, pero sin éxito:
Código:
//Aquí cargo el Assembly llamante (Es decir el .EXE)
System.Reflection.Assembly objAssemlby = System.Reflection.Assembly.GetEntryAssembly();

//Recupero los recursos de ese Assembly (Dos elementos en el string[])
string[] resources = objAssemlby.GetManifestResourceNames();

//Busque el recurso en los dos elementos del array, pero sin éxito.
ResourceManager rm = new ResourceManager(resources[0], objAssemlby);
object o = rm.GetObject("contextCurrentUser");

//Luego probe con el segundo:
ResourceManager rm = new ResourceManager(resources[1], objAssemlby);
object o = rm.GetObject("contextCurrentUser");
En fin... cualquier luz que me podáis echar será bien recibida.
__________________
Charlie.
  #5 (permalink)  
Antiguo 20/05/2014, 09:49
 
Fecha de Ingreso: mayo-2014
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: WPF: Cargo vía MEF un UserControl. Como acceder desde el UC a un Recurso d

Hola chcma.

No acabo de entender muy bien lo que intentas hacer pero se me ocurre lo siguiente:

¿ Si lo que quieres es poder acceder desde la aplicación principal a las dll porque no las cargas en las Referencias y las instancias en el código.?

Cargas la referencia en en diseño de HSoft.Common
y luego en el código;

HSoft.Common hsoft = new HSoft.Common();

De esta manera debes tener acceso a todos los métodos.
Si lo que quieres es una clase concreta:

HSoft.clase_concreta cl = new HSotf.clase_concreta();

No sé si te refieres a eso o voy completamente despistado.

Un saludo
  #6 (permalink)  
Antiguo 21/05/2014, 06:46
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Respuesta: WPF: Cargo vía MEF un UserControl. Como acceder desde el UC a un Recurso d

Hola Tolotoko,

Gracias por responder, pero la idea, como puse en el título, es cargar las dlls por MEF, para evitar tenerlas referenciadas en el proyecto.

Por un lado tengo la app principal, y luego .dll externas.

Esta app principal, las carga y después en base a un menu XML que hay, puedes abrir UserControls que están existentes en las .dll cargadas dinámicamente.

Lo que me gustaría es, desde este UserControl, existente en la dll externa, pero que ha sido cargado en la app principal, poder acceder a recursos de la misma app principal que lo ha cargado.

Código:
-------------------------------------------               **************************
.dll externa con User Control              |  ------>    *      APP, con Recursos   *
-------------------------------------------               **************************
__________________
Charlie.

Etiquetas: recurso, usercontrol, vía, wpf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:59.