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