Я пишу приложение WPF MVVM с использованием Prism. Пару дней назад я спросил о лучших методах управления различными взглядами и не получил много отзывов. Смысл в том, что я придумала систему, которая, кажется, работает, но я хочу быть уверенной, что меня не уволят.
Я следовал инструкциям на http://development -guides.silverbaylabs.org / , чтобы получить настройки оболочки и уверен, что мои модули хорошо регистрируются.
Однако нигде в этих руководствах не было примера замены представления другим представлением в данном регионе. В общем, кажется, довольно сложно найти хороший пример. Итак, сегодня я свернул свое собственное решение проблемы.
По существу, модуль имеет контроллер, который отслеживает текущее представление, затем, когда пользователь хочет переключить представления, он вызывает команду Regions.Remove и затем команду add, чтобы заменить его текущим представлением. Кажется, должно быть более элегантное решение, чтобы просто переключаться между различными зарегистрированными представлениями, но я не нашел его.
Все возможные виды для модуля регистрируются в контейнере Unity при инициализации модуля.
Контроллер и функция переключения вида:
namespace HazardModule
{
public class HazardController : IHazardController
{
private object CurrentView;
public IRegionManager RegionManager { get; set; }
private IUnityContainer _container;
public HazardController(IUnityContainer container)
{
_container = container;
}
/// <summary>
/// Switches the MainRegion view to a different view
/// </summary>
/// <typeparam name="T">The class of the view to switch to</typeparam>
public void SiwthToView<T>()
{
if (CurrentView != null)
{
RegionManager.Regions["MainRegion"].Remove(CurrentView);
}
CurrentView = _container.Resolve<T>();
RegionManager.Regions["MainRegion"].Add(CurrentView);
}
}
}
Любая обратная связь или другие лучшие решения будут оценены.