【问题标题】:How to preload Prism views at application startup?如何在应用程序启动时预加载 Prism 视图?
【发布时间】:2011-03-22 09:37:20
【问题描述】:

我们使用 Prism 4 for WPF 以及 Prism 附带的导航功能

当导航到(加载)我们应用程序中的某些视图时,我们注意到延迟 - 这是可以理解的来自实例化视图及其依赖项,这包括从磁盘加载必要的程序集。

我们希望在应用程序启动时预加载这些视图,同时显示启动屏幕或类似内容。

有没有人做过类似的事情并想分享他们的经验?

【问题讨论】:

    标签: wpf view navigation preload prism-4


    【解决方案1】:

    我们还没有找到一个“干净”的解决方案来做到这一点。但这就是我们解决它的方法。

    在引导程序函数 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();
    }
    

    这不是一个理想的情况,如果您有很多视图,可以进行大量的维护工作。这对我有用,但如果有人有更好的解决方案,我也很感兴趣。

    【讨论】:

    • 这也是我的想法。这是一个短期的解决方案,但始终希望 Prism 团队能够在未来找到解决问题的方法。
    • 如果能够将预加载视图的责任交给包含它们的模块,那就太好了。您是否尝试过在初始化期间的较早时间加载/导航到您的视图,或者这会给您带来错误?
    • 我曾尝试在引导程序的早期阶段“预加载”视图,但这会导致空异常,因为它尚未加载一些 ViewModel。
    • @TimoKosig 你能给我一个导航或加载视图的例子吗?
    【解决方案2】:

    我不知道这是否有帮助,但我使用以下技术: 1)将所有需要的程序集的引用添加到我的shell 2) 使用来自WPF toolkit的忙碌指示符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多