Использование Prism для навигации в приложении Wpf

StackOverflow https://stackoverflow.com/questions/1401830

  •  05-07-2019
  •  | 
  •  

Вопрос

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

Если быть более точным в отношении моей первой задачи, у меня есть приложение с регионом «навигация/меню» и «основным» регионом.Область навигации будет одинаковой для всех представлений основной области, поэтому я определяю меню в файлеshell.xaml.При нажатии на любой пункт меню я хотел бы добавить представление региона с помощью Prism.Первый;для этого обычно используют Prism?Если так;каков типичный подход?И я имею в виду на более структурном уровне..

У меня сложилось впечатление, что Prism в конечном итоге сделает мое приложение гораздо более масштабируемым, и я вижу, что получаю от него некоторые другие преимущества — например, контейнер IoC.Поэтому я хотел бы использовать его - если бы я мог сделать только первые шаги..

Это было полезно?

Решение

У меня есть пример, который использует немного больше ощущения CAG для модулей, вносящих вклад в меню и как добавлять представления в регион. Это должно прояснить ситуацию.

http://dl.getdropbox.com/u/376992/CAGMenus.zip

Надеюсь, это поможет, Андерсон

Другие советы

Бумбушка,

Prism станет для вас отличным способом достижения этой функциональности, и это довольно легко сделать, если вы понимаете принципы.

Я сделаю это так: добавлю прослушиватели событий в стартовое событие вашего основного региона.Когда вы выбираете свой элемент в меню, вы запускаете событие.Когда это произойдет, ваш основной регион обработает событие, и вы удалите текущее представление из основного региона.Затем создайте новое представление, которое хотите использовать, и добавьте его.

Ваш основной регион должен выглядеть примерно так:

public void Initialize()
{
    Events.PageEvents.ClickedEvent1 ce1 = this.eventAggregator.GetEvent<Events.PageEvents.ClickedEvent1>();
    ce1.Subscribe(LoadView, ThreadOption.UIThread, true);
}

private void LoadView(Events.HomePageEvents.Clicked clicked1)
{
    IRegion mainRegion = RegionManager.Regions["MainRegion"];
    foreach (object view in new List<object>mainRegion.Views))
    {
        RegionManager.Regions["MainRegion"].Remove(view);
    }

    IModule firstModule = Container.Resolve<Modules.FirstModule>();
    firstModuleModules.Initialize();

}

Я надеюсь, что это укажет вам правильное направление.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top