我们使用棱镜4 WPF以及附带的棱镜导航功能。如何在应用程序启动时预加载Prism视图?
当浏览(加载)在我们的应用有一定的看法,我们看到的延迟 - 这可以理解来自实例化视图及其相关性,这包括从磁盘装载必要的组件。
我们希望在应用程序启动时预先加载这些意见而呈现出闪屏或类似的东西。
有没有人做过类似的东西,想分享他们的经验?
我们使用棱镜4 WPF以及附带的棱镜导航功能。如何在应用程序启动时预加载Prism视图?
当浏览(加载)在我们的应用有一定的看法,我们看到的延迟 - 这可以理解来自实例化视图及其相关性,这包括从磁盘装载必要的组件。
我们希望在应用程序启动时预先加载这些意见而呈现出闪屏或类似的东西。
有没有人做过类似的东西,想分享他们的经验?
我们还没有找到一个“干净”的解决方案做到这一点呢。但这是我们如何解决它的。
在引导程序功能InitializeShell(),我们定位到我们要预加载的所有意见。最后我们导航到我们想要在主屏幕上显示的所有视图。
protected override void InitializeShell()
{
base.InitializeShell();
Application.Current.MainWindow = (MainShell) Shell;
// Preload views
// ---- Load (navigate to) all views here you want to have preloaded
// Load actual default views
// ---- Load (navigate to) the actual views for your "homescreen"
// Finished loading now show the shell
Application.Current.MainWindow.Show();
}
这不是一个理想的情况下,如果你有很多的意见,可以给大量的维护工作。这为我做了这份工作,但如果有人有更好的解决方案,我也很感兴趣。
我不知道这是否能够帮助或没有,但我用下面的方法: 1)添加一个引用了所有需要的组件,以我的壳 2)使用繁忙指示从WPF toolkit
这是我也考虑过这种事情。这只是一个短期的解决方案,但总有希望,棱镜团队将在未来提出解决方案。 – 2011-03-25 08:24:04
能够将视图预加载到包含它们的模块的责任是很好的。您是否曾尝试在初始化期间的较早时间加载/导航到您的视图,或者是否会给您带来错误? – 2011-03-25 08:26:44
我试图在引导的早期阶段“预加载”视图,但是这导致了空异常,因为它还没有加载一些ViewModels。 – 2011-03-28 12:25:15