Как создать все точки зрения в призме - PullRequest
0 голосов
/ 13 сентября 2018

Ниже вы можете увидеть мой загрузчик.Я хочу зарегистрировать все виды из начальной загрузки.Когда я запускаю приложение, создаются 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 Ответ

0 голосов
/ 13 сентября 2018

Представление не должно создаваться до его фактического отображения на экране.Кроме того, представление должно определять только пользовательский интерфейс.

Если вы ожидаете, что конкретная модель представления будет активной, когда вы отправляете событие с использованием агрегатора событий из другой модели представления, вы фактически вводите косвенную связь междуэти две модели просмотра.И это именно то, чего вы хотите избежать, используя в первую очередь агрегатор событий.

Таким образом, если вы полагаетесь на все обрабатываемые события, вам, вероятно, следует рассмотреть возможность использования общего сервиса, который вы создаете в качестве одиночного в загрузчике.Затем вы можете внедрить модели представлений с помощью этой общей службы и обмениваться данными между собой через интерфейс службы.

...