我用PRISM和MEF创建了一个silverlight应用程序。 有没有办法通过一些Web服务或数据库调用填充模块目录? PRISM文档中显示的示例通过XAP文件获取模块信息,该文件包含在Shell项目中。 在我的情况下,我需要从一些服务获得此列表。我读了一些文章,建议创建一个实现IModuleCatalog的自定义ModuleCatalog。
我无法找到有关如何继续的任何示例或代码段。 有关如何实现这一目标的任何建议吗?
谢谢, 迪帕克
答案 0 :(得分:1)
获得此要求的解决方案。 为了在运行时加载OnDemand模块,必须将Module Info对象添加到目录
中 ModuleInfo moduleInfo = new ModuleInfo();
moduleInfo.ModuleName = item.Name;
moduleInfo.ModuleType = item.Type;
moduleInfo.Ref = item.Reference;
ModuleCatalog.AddModule(moduleInfo);
上面代码中显示的项目是使用webservice调用填充的,该调用命中数据库并获取名称,类型和引用(example.xap)。
这成功添加了模块目录,只需导入该属性就可以在任何ViewModel中引用模块目录
[Import(AllowRecomposition = false)]
public IModuleManager ModuleManager;
[Import(AllowRecomposition = false)]
public IModuleCatalog ModuleCatalog;
为了在单击按钮或任何事件期间加载模块,只需调用ModuleManager.LoadModule(YourModuleName);就是这样,它可供使用。