Как лучше всего управлять навигацией с помощью PRISM?

Использование Prism - как лучше всего управлять навигацией в приложении WPF? И как это применить? Есть ли лучшие практики?

В своем приложении я сейчас использую агрегирование событий. Любой пункт меню или другой элемент, который должен приводить к навигации в программе, опубликует событие, и модуль, ответственный за открытие представления, представленного опубликованным событием, сделает это. Это прекрасно работает, но мне кажется, что это не лучший способ управления навигацией с помощью Prism. Это?


person stiank81    schedule 11.03.2010    source источник


Ответы (1)


Это такой же хороший метод, как и любой другой, по крайней мере, в том, что касается Prism. Один из способов, которым я делал это раньше, - это настроить один модуль / класс в качестве «брокера навигации»; для приложений типа MDI я обычно называю его WindowManager из-за недостатка творчества. Этот парень получит IRegionManager и IEventAggregator и начнет прослушивать любые события типа «Новое окно» или «Перейти к» и соответствующим образом изменять / создавать регионы. Если вы хотите немного поумнеть, вы можете начать использовать RegionManager с областью видимости:

http://msdn.microsoft.com/en-us/library/cc707903.aspx

http://blogs.msdn.com/erwinvandervalk/archive/2009/04/29/how-to-build-an-outlook-style-application-with-prism-v2-part-2.aspx

Основная проблема с этой тактикой (и с использованием аспектов агрегации событий в целом) заключается в том, что любые CompositePresentationEvents, которые вам нужно обрабатывать несколькими модулями или, по крайней мере, «вне» модуля повышения, вам необходимо объявить в общем месте (обычно я поместите их в проект под названием Infrastructure). Это мне не очень нравится.

person JerKimball    schedule 12.03.2010
comment
Спасибо за Ваш ответ! Идея Navigation Broker звучит разумно. Я делаю то же самое - только у меня есть один брокер на каждый модуль. Взглянем на менеджеров по регионам. - person stiank81; 13.03.2010