WPF, MVVM и Prism модульность - PullRequest
       4

WPF, MVVM и Prism модульность

2 голосов
/ 23 сентября 2010

Я все еще учусь использовать MVVM и Prism и у меня есть несколько общих вопросов:

  • У меня есть сетка на мой взгляд. Допустим я есть кнопка, когда я нажимаю хотите, чтобы размер сетки автоматически колонны. Куда пойдет этот код? Изменение размера столбцов сетки - это вещь для просмотра и модель представления не должна знать об этом. Так что в этом случае я бы добавив обработчик нажатия кнопки в код представления позади? у меня есть тот же вопрос с редактированием сетки и Проверка. Модель представления может видеть когда значение редактируется с двусторонним обязательный, но если он решит, что значение недействительно, как оно может уведомить сетка для отмены редактирования?

  • Допустим, мой взгляд имеет несколько пользователей контролирует и каждый пользовательский контроль потребностей привязать к данным из другого объекта. Будет ли моя модель представления для этого представления просто огромным классом со всеми данными, которые потребуются для всех различных компонентов представления?

  • Что касается призмы и модульной конструкции, я пытаюсь выяснить что такое «модуль» есть. Мое понимание что модуль является автономным, то есть, если я заберу свой модуль и поместите его в другое приложение, оно должно Работа. Так что, если у меня есть класс который делает некоторые вызовы службы (позволяет скажем SOAP звонки на сервер получить некоторые информация) и заполняет сетку, мой модуль нужно будет включить оба MVVM компоненты и мой уровень обслуживания, право? Если у меня есть несколько модулей которые используют тот же уровень обслуживания, делает каждый из них должен включать копию классов сервисного уровня для того, чтобы считаться завершенным модуль

Спасибо за любой совет / информацию.

1 Ответ

3 голосов
/ 23 сентября 2010

Я постараюсь пройтись по этим пунктам отдельно.

  1. Как вы сказали, изменение размера столбцов сетки - это скорее вопрос представления, поэтому лучше всего было бы сохранить его как часть логики пользовательского интерфейса. Чтобы сохранить код как можно более чистым, вы можете использовать разные вещи, такие как поведение и в некоторых сценариях маршрутизируемые команды, чтобы избежать наполнения вашего кода кодом. Что касается логики проверки, вам, вероятно, следует поместить ее в VM / M и использовать возможности проверки WPF (такие как IDataErrorInfo и другие).
  2. Вы можете иметь единую модель представления для всех пользовательских элементов управления или использовать подход модели иерархического представления. Последнее падение Prism , показывает этот сценарий в RI MVVM.
  3. Ваше понимание модулей верно. Следует учитывать одну вещь: если у вас есть общий сервис для всего приложения, обычный подход заключается в размещении его интерфейса в проекте инфраструктуры и обращении к нему при необходимости (конкретная реализация обычно получается с помощью импорта DI или Mef). Модуль, к которому принадлежит конкретная реализация, может выбрать регистрацию службы в контейнере / выставить экспорт по мере необходимости. В этой теме есть больше информации о модулях, о том, что они из себя представляют и как их использовать.

Если вы только начинаете работать с Prism и у вас есть другие вопросы, вам может пригодиться форум codeplex , поскольку, возможно, команда Prism SE ответила на ваш вопрос.

Надеюсь, этот ответ поможет.

Спасибо, Damian

...