StockTrader RI> Контроллеры, Ведущие, WTF? - PullRequest
5 голосов
/ 01 марта 2010

В настоящее время я изучаю, как сделать расширенное использование WPF через проект Prism (Composite WPF).

Я смотрю много видео и примеров, и демонстрационное приложение StockTraderRI заставляет меня задать этот вопрос:

Какова точная роль каждой из следующих частей?

  • SomethingService: Хорошо, это что-то для управления данными
  • SomethingView: Хорошо, это то, что отображается
  • SomethingPresentationModel: Хорошо, здесь содержатся данные и команды для привязки представления (эквивалентно ViewModel).
  • SomethingPresenter: я не совсем понимаю, что это за использование
  • SomethingController: Donтоже не понимаю

Я видел, что докладчик и контроллер не нужны, но я хотел бы понять, почему они здесь.Может кто-нибудь сказать мне их роль и когда использовать их?

Ответы [ 2 ]

7 голосов
/ 01 марта 2010

У меня была точно такая же проблема , когда я впервые прошел Prism.

Controllers в основном для логики, охватывающей весь модуль, тогда как Presenters для логики, специфичной для View.

Например, Presenter будет отвечать на команду, в результате чего кнопка в представлении будет отключена. Controller будет реагировать на команду, которая приводит к полному изменению ViewPresenter) или, возможно, загрузке другого View / Presenter в другой области оболочки модуля.

Редактировать: Что касается того, когда их использовать, вы можете полностью пропустить Controller, если вам не нужна упомянутая выше оркестровка. Самое простое приложение будет просто иметь:

  • Module: регистрирует представление / докладчик в Region
  • Presenter: отвечает на команды из представления и изменяет ViewModel.
  • ViewModel: адаптер между Presenter и View, который реализует INotifyPropertyChanged
  • View: привязывается к ViewModel и отображает пользовательский интерфейс

Редактировать: Что касается Presenter и ViewModel, большая часть вашей логики должна быть в Presenter. Представьте, что ваша ViewModel содержит в себе логику вашего представления, а Presenter рассматривает последствия взаимодействия с представлением.

Например, пользователь нажимает кнопку «Поиск» в вашем View. Это вызывает ICommand, который обрабатывается вашим Presenter. Presenter начинает поиск и устанавливает свойство ViewModel.IsSearching, которое запускает уведомление PropertyChanged для CanSearch. CanSearch - это свойство только для чтения, которое основано на нескольких других свойствах (например, IsSearchEnabled && !IsSearching). Кнопка «Поиск» в View имеет свойство Enabled, привязанное к CanSearch.

0 голосов
/ 01 марта 2010

На мой взгляд, контроллер здесь относится к Application Controller

...