Я прочитал несколько хороших статей о шаблоне Model-View-ViewModel, и моя команда намеревается реализовать этот шаблон в последней версии нашего приложения. Я до сих пор не совсем понимаю ВСЕ части, которые идут вместе, чтобы заставить эту работу работать. Я хотел бы найти хороший пример этого паттерна, над которым я смогу работать. Что-то в небольшом масштабе, как это делает Джейсон Долинджер в своем видео здесь, но я бы хотел что-то, над чем я мог бы работать самостоятельно в более медленном темпе.
Заранее спасибо за вашу помощь.





По сути, ViewModel - это оболочка модели. Теперь это может быть не очень полезно :-) Думайте о модели как о данных, с которыми работает ваше приложение, скажем, о человеке. Теперь у человека есть день рождения, и вы можете захотеть иметь форму для ввода дня рождения человека. Предположим, мы просто используем простое текстовое поле, дата отображается примерно как 01-02-2009 12:00:00 AM. Для начала нам не нужна часть времени, и мы также можем не быть довольны частью 01-02-2009, так как это зависит от ваших настроек локали.
Итак, здесь идет модель ViewModel im. Он является оболочкой для класса Person и предоставляет дату как три целых числа: год, месяц и день. В наборе свойств он пытается построить дату из разных значений и отображает все возможные ошибки.
Проще говоря, ViewModel - это оболочка модели, специально ориентированная на конкретное представление (отображение). Он одновременно устраняет большинство IValueConvertors.
У Джоша Смита есть хорошее объяснение: http://joshsmithonwpf.wordpress.com/2008/11/14/using-a-viewmodel-to-provide-meaningful-validation-error-messages и большое обсуждение здесь: http://groups.google.com/group/wpf-disciples/browse_thread/thread/3fe270cd107f184f?pli=1
У Нихила Котари есть сообщение о том, как использовать этот шаблон с его библиотекой Silverlight.FX. Посмотрите здесь: http://www.nikhilk.net/ViewModel-Pattern-DLR.aspx
А также есть:
Prism 4.0 теперь включает документацию по созданию приложений MVVM. Это предназначено для использования библиотек Prism, но в целом концепции работают для шаблона MVVM.
В последнее время я прошел через многое, из них выделяются два:
Дэна Валина (LIDNUG):
http://www.lidnug.org/Archives.aspx
Джон Папа (PDC 2010):
http://player.microsoftpdc.com/Session/76864d75-b4da-4858-aac7-786c5f28e344
Вот еще один, который нужно добавить к списку: Simple MVVM Toolkit от Тони Снида (искренне ваш): http://simplemvvmtoolkit.codeplex.com.
Набор инструментов состоит из вспомогательных классов, шаблонов элементов Visual Studio и фрагментов кода. В дополнение к фактическому набору инструментов существует образец приложения с пошаговыми инструкциями по созданию базового приложения Silverlight с использованием шаблона MVVM.
Взгляните на мою статью о реальной MVVM в Silverlight. Хотя он не для новичков и ориентирован в основном на опытных разработчиков, работающих над реальными проектами.
http://alexburtsev.wordpress.com/2011/03/05/mvvm-pattern-in-silverlight-and-wpf/
Лучшее объяснение ViewModel было дано Скоттом Хансельманом во время его выступления по MVC в Европе.
Однострочный ответ - это модель (класс), которая создается с единственной целью - отправлять все необходимые данные, которые нужны конкретному представлению, а также для получения измененных данных из представления в случае двусторонних привязок.
Добавлен ряд новых функций, улучшена документация и больше примеров: blog.tonysneed.com/2011/01/23/….