Silverlight Prism模块未就绪

时间:2010-06-08 20:55:50

标签: silverlight prism cab

我正在使用Prism(a.k.a.复合应用指南)构建Silverlight 4.0应用程序。我有两个模块,都在我的 ModuleCatalog.xaml 中定义为 WhenAvailable 。我的Application_OnStart实例化我的 Bootstrapper 并调用它的 Run()方法。在我的应用程序启动并启动并运行之后(事实上,用户必须单击UI中的按钮),然后我尝试加载模块:

foreach (ModuleInfo mi in moduleCatalog.Modules)
    ...
    Type moduleType = Type.GetType(mi.ModuleType); // moduleType ends up null!

有时, moduleType 最终为null。我已经验证当我遇到null时,ModuleInfo的 State LoadingTypes 而不是 ReadyForInitialization 。我认为这意味着它仍在为我的模块下载单独的* .xap文件并将其类型带入应用程序域。

那我该怎么办?如果我知道有一些事情我可以听,知道他们终于全部装满了,我会高兴地阻止。

1 个答案:

答案 0 :(得分:0)

如果您打算使用Prism,则不应绕过它并自行创建模块。这不是Prism的工作方式。 Prism不提供加载完成的事件,因为这不是您应该做的事情。

简单案例:

如果您定义了模块目录,那么所有这些模块将逐步加载,因此在这种简单的情况下无需手动加载任何模块。您可以在根Silverlight应用程序中创建一个启动模块,该模块具有一些模块依赖性,这足以在应用程序加载的其余部分显示第一页。

需要更多信息:

我无法从上面的代码片段告诉你实际上要完成什么,所以更多的信息会有所帮助,但你应该使用Unity来解析接口,而不是直接使用Type.GetType()。您通常不需要解析模块本身,并且还有一些方法可以在Prism中触发按需加载(暂时不要使用它们......会更新它)。

感谢:

您已经意外地在Stack Overflow中提供了another question I asked答案的线索,所以非常感谢。