Модули призмы, имеющие в поле зрения собственные области
Я тренируюсь в Prism V4. 1 с Silverlight 5 (MefBootstrapper). К сожалению, я не могу найти реализацию ситуации, подобной этой:
- у меня есть 2 области в моей оболочке.код XAML.
- мои модули (xap-файлы, описанные в modulescatalog.xaml) (Module1 и Module2) вводятся в эти области;
- Одно из моих представлений в модуле (например, Module1) имеет свои собственные области.
И я хотел бы использовать мощь prism framework, чтобы ввести другие модули в это представление Module1. На самом деле этот модуль должен быть небольшим приложением prism со своими собственными модулями, которые должны иметь возможность передавать params в Module2 и другие.
Есть ли способ реализовать это?
Я имею в виду: может ли view внутри Module1 создать свою собственную область, чтобы зависимый модуль мог вводить view в эту область?
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);
Что касается связи между модулями, то у вас есть несколько вариантов. Прочитайте сообщение между слабо связанными компонентами для получения дополнительной информации.