为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
30秒到达战场 2022-01-15 17:17:42
贝娄你可以看到我的引导程序。我想从引导程序注册所有视图。当我启动应用程序时,会创建 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();  }}
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

在实际显示在屏幕上之前,不应实例化视图。此外,视图应该只定义用户界面。

如果您在使用来自另一个视图模型的事件聚合器发送事件时希望特定视图模型处于活动状态,那么您实际上是在这两个视图模型之间引入了间接耦合。这正是您首先要通过使用事件聚合器来避免的。

因此,如果您依赖所有正在处理的事件,您可能应该考虑使用在引导程序中作为单例实例化的共享服务。然后,您可以使用此共享服务注入您的视图模型,并通过服务接口在它们之间进行通信。


查看完整回答
反对 回复 2022-01-15
  • 1 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信