Модули призмы, имеющие в поле зрения собственные области


Я тренируюсь в Prism V4. 1 с Silverlight 5 (MefBootstrapper). К сожалению, я не могу найти реализацию ситуации, подобной этой:

  1. у меня есть 2 области в моей оболочке.код XAML.
  2. мои модули (xap-файлы, описанные в modulescatalog.xaml) (Module1 и Module2) вводятся в эти области;
  3. Одно из моих представлений в модуле (например, Module1) имеет свои собственные области.

И я хотел бы использовать мощь prism framework, чтобы ввести другие модули в это представление Module1. На самом деле этот модуль должен быть небольшим приложением prism со своими собственными модулями, которые должны иметь возможность передавать params в Module2 и другие.

Есть ли способ реализовать это?

Я имею в виду: может ли view внутри Module1 создать свою собственную область, чтобы зависимый модуль мог вводить view в эту область?

1 2

1 ответ:

Да, может, а почему бы и нет? Просто зарегистрируйте представления в этой области после загрузки зависимого модуля. Например, это можно сделать в методе IModule.Initialize зависимого модуля:

public void Initialize()
{
    regionManager.RegisterViewWithRegion("Module1RegionName", () => serviceLocator.GetInstance<DependentModuleView>());
}

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

regionManager.RequestNavigate("Module1RegionName", new Uri("DependentModuleView", UriKind.Relative));

//or resolve the view and activate it
var view = serviceLocator.GetInstance<DependentModuleView>();
var region = regionManager.Regions["Module1RegionName"];
region.Activate(view);

Что касается связи между модулями, то у вас есть несколько вариантов. Прочитайте сообщение между слабо связанными компонентами для получения дополнительной информации.