2009-10-19 8 views
0

Je ne sais pas si c'est possible, mais je suis en train de charger la plupart de mes modules à partir de l'assemblage de l'application principale, j'essaye de charger maintenant les modules XAP externes.Silverlight PRISM charger un module XAP externe

J'ai quelque chose comme ceci:

ModuleInfo themeModule = new ModuleInfo(); 
    themeModule.ModuleName = "Theme_External"; 
    themeModule.ModuleType = "Theme_External.Theme_External_Module, Theme_External, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"; 
    themeModule.Ref = "file://Theme_External.xap"; 
    themeModule.InitializationMode = InitializationMode.OnDemand; 
    catalog.AddModule(themeModule); 

Je me suis alors rendu compte que vous ne pouvez pas utiliser cette ref car il utilise l'accès aux fichiers locaux qui ne sont pas disponibles dans Silverlight. La seule raison pour laquelle cela fonctionnait pour moi était que j'avais une référence directe au projet de thème que je devais supprimer. Je voudrais soit pointer à http://localhost/Theme_External.xap ou une adresse web à distance plus tard dans la ligne.

Est-ce quelque chose que je peux faire avec la configuration actuelle de PRISM?

Merci pour votre temps

Répondre

1

Vous pouvez télécharger des fichiers XAP sur demande aussi longtemps qu'ils sont dans le même domaine que l'application principale. Il y a un article complet sur la livraison dynamique de données dans Silverlight here.

Si vous voulez télécharger un fichier XAP hébergé sur un domaine différent, vous devez avoir un Cross-Domain Policy file sur ce domaine.

2

Qu'est-ce que Dave a dit ...

et dans le cas où il est pas évident, le seul changement que vous auriez besoin de faire (en supposant que vos fichiers XAP sont dans le même répertoire) est de définir la propriété ref à:

themeModule.Ref = "Theme_External.xap"; 

urls reletive fonctionnera si elle est dans un répertoire plus bas que votre fichier XAP shell. Sinon, vous aurez besoin de l'URL absolue.