我可以使用一些帮助来找出为使用Prism 2构建并在浏览器外运行的Silverlight 4客户端应用程序实现“启动”/启动页面的最佳方法。
我支持一套应用程序,并且正在开发一个所有应用程序可能使用的公共控件和服务库。作为其中的一部分,我正在创建UnityBootstrapper类的子类来注册服务。
我遇到过这种情况,我需要在启动时使用来自服务器的数据“预加载”一些服务。这可能需要一些时间,因此我们希望在执行所有启动步骤时显示启动画面。由于我们在浏览器外运行,我知道这不是直截了当的。任何帮助表示赞赏。
我也对其他无法“延迟加载”启动数据的方法持开放态度。
答案 0 :(得分:0)
检查prism的示例项目(在PRISM安装下):
棱镜\快速入门\模块化
这将向您展示如何知道何时加载/完成模块
您可以在Shell上使用带有样式的Busy指示符来表示您正在加载。
答案 1 :(得分:0)
因此经过多次试验和错误后,我想出了以下方法,我现在正在努力研究它的运作情况。
我在我的类库中创建了一个Shell UserControl,它充当UI的包装器(容器)。我将此控件设置为RootVisual。在此控件的内容中,我添加了我的启动控件/视图并进行所有必要的启动服务调用。使用WaitHandles,我等到所有调用都返回后再用应用程序的起始页替换splash控件。
应用程序不知道这是如何工作的,这是我的目标。它们只是覆盖我添加到引导程序的方法来进行任何启动服务调用。服务调用在后台线程上执行,代码使用WaitHandle.WaitAll来阻塞,直到完成所有调用,然后使用Dispatcher.BeginInvoke将splash替换为应用程序的主页面。
这一切看起来都很顺利。