Я занимаюсь разработкой крупного WPF-приложения для всего предприятия почти 2 года. Как и при любой разработке пользовательского интерфейса, важно понять, как лучше всего разработать шаблон пользовательского интерфейса для конкретной технологии, которую вы используете. Из моего опыта работы с WPF шаблон проектирования Model-View-ViewModel является наиболее распространенным. Когда вы поймете силу связывания данных в WPF, легко понять, почему такой шаблон, как M-V-VM, так принят. Даже если вы не будете следовать шаблону M-V-VM (или его разновидности) слово в слово, поймите решение общей картины, к которому обращается шаблон. По сути, храните файл UI / XAML (View) в отдельном файле, а весь программный код / логика (ViewModel) - в другом файле. Представление просто реагирует на изменения в ViewModel.
Отделяя ViewModel, вы получите несколько преимуществ.
Легко создавать автоматизированные тесты для объекта ViewModel, поскольку в нем нет графических компонентов. Это просто объект с методами / свойствами.
Проще разделить работу между разработчиками (например, один разработчик создает View, а другой разработчик создает ViewModel).
В ViewModel намного проще использовать многопоточность, поскольку она никогда не взаимодействует напрямую с элементами управления пользовательского интерфейса. Вы знаете, что я имею в виду, если вы когда-нибудь пытались обновить текстовое поле в фоновом потоке.
Ниже приведены некоторые плюсы и минусы WPF и оконных форм из моего опыта:
Плюсы:
Гораздо лучший внешний вид и удобство пользовательского интерфейса для конечных пользователей. WPF позволяет вам полностью контролировать внешний вид любого элемента пользовательского интерфейса. (например, список, содержащий изображение / кнопку / текст для каждой строки).
Связывание данных поразительно. Привязка элементов управления вашего пользовательского интерфейса в файле XAML для указания на конкретные свойства в вашем классе ViewModel, и все просто работает. Пользовательский интерфейс просто реагирует на любые изменения свойств ViewModel. Полное разделение! Вы действительно увидите преимущества этого, если захотите, чтобы несколько окон / пользовательских элементов управления отображали одну и ту же информацию одновременно и автоматически синхронизировали.
Все, что я прочитал в MSDN, - это то, что Microsoft вкладывает гораздо больше ресурсов в WPF, чем в старые формы окон.
Минусы:
Большая кривая обучения. Не удивляйтесь, если разработчикам, не имеющим предварительного опыта работы с WPF, потребуется несколько месяцев, чтобы создать несколько сложный пользовательский интерфейс. Это совершенно новая технология, и у нее будет время для обучения.
Некоторые общие пользовательские элементы управления еще не были разработаны Microsoft (например, замаскированное текстовое поле, сетка данных). Однако Visual Studio 2010 поставляется с сеткой данных и работает хорошо. Кроме того, на рынке имеется множество сторонних контролей.
Лучшие ресурсы, которые я могу придумать:
«Pro WPF в C # 2008» - эта книга потрясающая. Это более 1000 страниц. Это покрывает почти всю область WPF. Используйте это как справочник. Это прямо к делу с простыми для понимания примерами.
Ссылка на статью Джоша Смита о шаблоне Model-View-ViewModel: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090016
Как я упоминал ранее, не зацикливайтесь на чьей-то версии шаблона M-V-VM. Еще важнее понять, как WPF позволяет вам легко создавать ModelView, а представление автоматически реагирует на изменения.
Удачи! Вы не пожалеете WPF, если сможете пройти эту чертову кривую обучения.