У меня есть проект оболочки, который загружает модули в моем загрузчике в элемент управления вкладками в главном представлении моей оболочки.
Я только что реализовал кнопку закрытия на элементах вкладки, которая теперь ставит вопрос о том, как сделатьЯ перезагружаю представления модулей из оболочки?
Пробовал использовать
moduleManager.LoadModule("ModuleA");
, но это работает только при первой загрузке модуля.Когда я вызываю вышеупомянутое, он загружает и инициализирует модуль, отображая вид.Если я затем снова закрываю представление, то во второй раз, когда я пытаюсь это сделать, оно не перезапускает представление (я предполагаю, что оно не инициализирует модуль заново, поскольку он уже загружен).
Итак, я думаю, чтодумал об использовании чего-то вроде следующего в моей оболочке:
var moduleAView = ServiceLocator.Current.GetInstance<ModuleAView>();
regionManager.Regions["TabRegion"].Add(ModuleAView);
regionManager.Regions["TabRegion"].Activate(ModuleAView);
Проблема этого подхода в том, как моя оболочка узнает о типе ModuleAView в строке 1?У меня нет ссылки на модуль A, и я не хочу добавлять его.Я думал о едином интерфейсе, который будет реализован ModuleAView, который мог бы использоваться совместно модулем и оболочкой, но я получил ошибку компоновки при попытке использовать подход ServiceLocator.GetInstance, как описано выше.
Большое спасибо за вашу помощь.
PS Это код модуля модуля, который я пробовал.
[ModuleExport(typeof(ModuleA), InitializationMode = InitializationMode.OnDemand)]
[Module(ModuleName="ModuleA")]
public class ModuleA : IModule
{
private IRegionManager _regionManager;
[ImportingConstructor]
public ModuleA(IRegionManager regionManager)
{
this._regionManager = regionManager;
}
public void Initialize()
{
// add the search view to the region manager.
this._regionManager.RegisterViewWithRegion("TabRegion", typeof(Views.ModuleAView));
}
}