猿问

如何实例化 Prism 中的所有视图

贝娄你可以看到我的引导程序。我想从引导程序注册所有视图。当我启动应用程序时,会创建 WebView 和 EditView。GeneralView 是 EditView 的一部分,我必须先导航到 EditView 才能实例化它。启动可执行文件时如何实例化所有视图?


class Bootstrapper : UnityBootstrapper

{


  protected override DependencyObject CreateShell()

  {

    // Register views

    IRegionManager regionManager = this.Container.Resolve<IRegionManager>();



    regionManager.RegisterViewWithRegion("ContentRegion", typeof(WebView));

    regionManager.RegisterViewWithRegion("ContentRegion", typeof(EditView));


    // The following view is instantiated for the first time when I navigate to EditView

    regionManager.RegisterViewWithRegion("GeneralRegion", typeof(GeneralView));


    return Container.Resolve<MainWindow>();

  }


  protected override void InitializeShell()

  {

    Application.Current.MainWindow.Show();

  }


  protected override void InitializeModules()

  {

    base.InitializeModules();

  }

}


30秒到达战场
浏览 185回答 1
1回答

MM们

在实际显示在屏幕上之前,不应实例化视图。此外,视图应该只定义用户界面。如果您在使用来自另一个视图模型的事件聚合器发送事件时希望特定视图模型处于活动状态,那么您实际上是在这两个视图模型之间引入了间接耦合。这正是您首先要通过使用事件聚合器来避免的。因此,如果您依赖所有正在处理的事件,您可能应该考虑使用在引导程序中作为单例实例化的共享服务。然后,您可以使用此共享服务注入您的视图模型,并通过服务接口在它们之间进行通信。
随时随地看视频慕课网APP
我要回答