2010-07-22 5 views
0

Я создаю приложение, использующее WPF, который использует платформу Prism. Я создал форму оболочки и определенные области в ней для панели инструментов, меню и рабочей области. В области рабочей области я могу загружать модули, но у меня есть одно требование, когда мне нужно загрузить форму Employee Master, отображающую весь список сотрудников в сетке. При двойном щелчке этой строки сотрудника в сетке он должен перейти к форме сведений о сотрудниках. Здесь я не должен использовать элемент управления Tab. При двойном щелчке сетки сотрудника форма работника-получателя должна быть закрыта или выгружена, а экран сведений о сотрудниках должен быть загружен.WPF Prism Master Подробности формы

Любые предложения от экспертов Prism по этому вопросу.

Спасибо и наилучшими пожеланиями, Гарри

ответ

2

Я нахожу, что в этих сценариях люди ищут места для «Prism-ify» своего решения , Вот мое правило эмпирического, когда использовать EventAggregator в Prism:

  1. приложения еще полезно, существует ли абонент в случае
  2. я не могу использовать обычное событие .NET или другой механизм, потому что абонент определяется в другом модуле

Это единственные случаи, когда я использовал EventAggregator для решения проблемы. В противном случае я просто использую механизмы, встроенные в WPF. В частности, в сценарии «главный/подробный» два вида, вероятно, полезны только вместе, что делает их логически одним и тем же представлением, а не отдельными представлениями.

В этом случае я обычно делаю что-то вроде этого (в этом сценарии я опустил appopritate DataTemplates, но, надеюсь, этого достаточно, чтобы проиллюстрировать, что вам не нужно ничего, что могло бы решить эту проблему).

<ListBox ItemsSource="{Binding Turtles}" IsSynchronizedWithCurrentItem="True" /> 
<ContentControl Source="{Binding Turtles/}" /> 

Это использует простой механизм WPF, который отображает список элементов в коллекции и когда пользователь выбирает элемент, значение «Черепахи /» изменяются на выбранном элемент. Просто. Не нужно чрезмерно усложнять ситуацию.

Если вы действительно чувствуете, что ваш сценарий требует EventAggregator (соответствует правилам № 1 и № 2 выше), тогда сделайте это как можно проще ... послушайте событие, поднятое моделью представления и потребляющее ее из модель представления (вы используете MVVM, правильно?). Все больше - головная боль.

0

Я хотел бы использовать eventaggregator для этого или, возможно, новый VisualStateManager.

Одна из ловушек, с которыми я столкнулась с ПРИЗМ, - это завышение дизайна. Я в конце концов прекратил использовать его и вырвал его из моего проекта, и все прошло гораздо приятнее. Хотя я все еще использую и люблю eventaggregator ... но theres большая кривая обучения по всем регионам и viewstate вещь ...

+0

Можете ли вы подробнее рассказать об этом, поскольку я новичок в этой технологии ... Призма должна быть в моем приложении – ravi

+0

Скажите мне, почему Prism является обязательным. Я думал, что это тоже нужно, пока я не узнал, что это не ... добавление его в ваш проект, поскольку новичок будет умножать сложность и кривую обучения. – ecathell

+0

Требование клиента такое же, как – ravi