Имейте в виду, что MVVM кажется подходящим только для приложений с одним окном.
Я погрузился в WPF, основываясь на неопытности и общих рекомендациях о том, что он лучше всего подойдет для проекта киоска, особенно проекта, в котором клиент дал мне фотошоп-изображения всех экранов приложения. Наличие крутой графики было требованием для этого проекта, и мне понравилось смутное сходство WPF с веб-разработкой.
Я обнаружил несколько недостатков
1) нет такой вещи, как официальный инструментарий MVVM. Их много, все они поддерживаются отдельным человеком. Год назад был отодвинут на второй план инструментарий Microsoft, и поддержка VS2010 отсутствует.
2) программирование приложения для нескольких окон, что-то вроде простого мастера с возвратом вперед и назад, просто кошмар. Я вышел из этого с чистым дизайном, определяющим делегата для каждого действия пользовательского интерфейса и команду для каждого бизнес-действия, но все же я думаю, что слишком много участия в платформе, чтобы оправдаться, и вы не можете показать результаты своих тестов этот клиент ожидает волнение.
3) Вы отказываетесь от привычки двойного нажатия на кнопку и добавления некоторого кода. Это оставляет неприятное чувство от использования IDE против его природы. В основном вы используете Visual Studio в качестве текстового редактора и дизайнера интерфейсов, но с помощью этого инструмента.
Плюсы на данный момент:
1) определение визуальных компонентов очень гибкое, быстрое и простое, и вы можете выбирать между VS и Expression Blend. Анимации просты в создании.
2) привязка данных упрощает применение. Вы определяете DataContext и привязки, и вам не нужно перемещать данные из бизнес-логики в интерфейс самостоятельно, если у вас есть свойство для всего, что должно отображаться.
3) Вы можете уменьшить количество бизнес-логики в интерфейсе до нуля. Поведение приложения легко отделить от его внешнего вида, поэтому вы можете без особых усилий обработать интерфейс десятью способами и протестировать всю логику, не открывая окно.
4) вы оставляете дверь открытой, чтобы идти с Silverlight, если вас спросят.
Мой вывод таков: если вы имеете в виду приложение MDI, вы можете столкнуться с большими проблемами. Вы должны знать, что если вы выберете WPF, вы будете пахать почву для будущих поколений, а не садиться в поезд, который доставит вас туда быстро и легко. Не существует установленного способа делать вещи, особенно те, которые не охватываются демонстрациями.
Инструментарий, учитывая все обстоятельства, не так важен, и каждый из них будет вам полезен. На самом деле пары поддерживающих классов достаточно, чтобы начать, и здесь нет причудливых волшебников, вы должны следовать соглашениям.
Вы даже можете сделать свой собственный, если несколько часов, как только вы поймете, что в логике. Недостатком является то, что вам придется по-настоящему понять это, чтобы изменить приложение по-своему.
Как я уже говорил выше, мне пришлось многому научиться, чтобы показать новое представление, когда они нажимают кнопку, сохраняя код в чистоте. Потратьте время, чтобы посмотреть видео, на которые ссылались ранее, в StackOverflow , что сэкономит ваше время.