Silverlight PRISM创建自定义模块目录

时间:2011-10-19 11:21:51

标签: silverlight-4.0 prism mef

我用PRISM和MEF创建了一个silverlight应用程序。 有没有办法通过一些Web服务或数据库调用填充模块目录? PRISM文档中显示的示例通过XAP文件获取模块信息,该文件包含在Shell项目中。 在我的情况下,我需要从一些服务获得此列表。我读了一些文章,建议创建一个实现IModuleCatalog的自定义ModuleCatalog。

我无法找到有关如何继续的任何示例或代码段。 有关如何实现这一目标的任何建议吗?

谢谢, 迪帕克

1 个答案:

答案 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);就是这样,它可供使用。