0

我可以使用一些帮助找出为使用 Prism 2 构建并在浏览器之外运行的 Silverlight 4 客户端应用程序实现“启动”/启动页面的最佳方式。

我正在支持一套应用程序,并且正在开发一个所有应用程序都可以使用的通用控件和服务库。作为其中的一部分,我正在创建 UnityBootstrapper 类的子类来注册服务。

我遇到了一种情况,我需要在启动时使用来自服务器的数据“预加载”一些服务。这可能需要一些时间,因此我们希望在执行所有启动步骤时显示一个启动屏幕。由于我们的浏览器用完了,我知道这不是直截了当的。任何帮助表示赞赏。

对于不能“延迟加载”的启动数据,我也愿意接受其他方法。

4

2 回答 2

0

检查 prism 的示例项目(在您的 PRISM 安装下):

棱镜\快速入门\模块化

这将向您展示如何知道模块何时加载/完成

您可以在 Shell 上使用带有样式的 Busy 指示器来指示您正在加载。

于 2011-09-21T20:12:23.397 回答
0

因此,经过多次试验和错误,我提出了以下方法,我现在正在研究它的工作情况。

我在我的类库中创建了一个 Shell UserControl,它充当 UI 的包装器(容器)。我将此控件设置为 RootVisual。在此控件的内容中,我添加了我的启动控件/视图并进行了所有必要的启动服务调用。使用 WaitHandles,我等到所有调用都返回后,再用应用程序的起始页替换启动控件。

该应用程序不知道这些是如何工作的,这是我的目标。他们只是覆盖了我添加到引导程序的方法来进行任何启动服务调用。服务调用在后台线程上执行,代码使用 WaitHandle.WaitAll 进行阻塞,直到所有调用完成,然后使用 Dispatcher.BeginInvoke 将启动画面替换为应用程序的主页。

这一切似乎都很好。

于 2011-09-23T23:09:58.713 回答