2010-09-22 4 views
2

Я все еще учусь использовать MVVM и Prism и имеют некоторые общие вопросы:WPF, MVVM и Prism модульность

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

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

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

Благодарим за консультацию/информацию.

ответ

3

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

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

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

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

Спасибо, Damian

+0

Благодаря Дамиана. Действительно полезно. – Flack

Смежные вопросы