Каковы лучшие чтения, чтобы начать использовать WPF вместо WinForms? - PullRequest
9 голосов
/ 05 мая 2010

Помня о том, что однажды сказал CannibalSmith: «Во всех ответах говорится:« WPF - это другое ». Это огромное преуменьшение. Вам нужно не только изучать много нового - вы должны забыть все, что вы узнали из форм. Это совершенно новый способ создания пользовательского интерфейса. "

.. и имея многолетний опыт разработки визуальных настольных приложений для Windows (VB6, Borland C ++ Builder VCL, WinForms) (что трудно забыть), как мне быстро перейти к разработке, чтобы сказать, правильно сформированные приложения WPF с Visual Studio?

Мне не нужна придурковатая графика, чтобы придать моему приложению внешний вид голливудского блокбастера или пижамы за миллион долларов. Мне всегда нравилась чистота стандартных элементов управления Windows и руководящих принципов разработки пользовательского интерфейса, и еще больше я наслаждался ими под соусом Vista Glass Aero Graphite.

Я полностью удовлетворен WinForms, но я хочу, чтобы мои приложения были построены на основе самых эффективных и современных стандартных технологий и были спроектированы в соответствии с самыми эффективными и гибкими шаблонами сегодня и завтра, используя интеграцию на основе интерфейса повторное использование функциональности и использование всех преимуществ современного оборудования и API для максимизации производительности, удобства использования, надежности, удобства обслуживания, расширяемости и т. д.

Мне очень нравится идея разделения представления, логики и данных, позволяющая представлению использовать все преимущества платформы (может ли она работать в качестве апплета веб-браузера на тонком клиенте или в качестве настольного приложения на ПК с новейший графический процессор), позволяя повторно использовать логику, распараллеливать ее и непрерывно развивать, сохраняя данные в хорошо структурированном формате в нужном месте.

Но ... хотя переход с VB6 на Borland C ++ Builder был очень простым (для включения и начала работы не требовалось книг / руководств) (если я уже знал C ++), переход с BCB на WinForms был таким же плавным, мне не кажется очевидным, как это сделать с WPF.

Так как мне лучше всего превратить себя из разработчика WinForms в правильного мышления и работающего разработчика WPF?

Ответы [ 5 ]

4 голосов
/ 05 мая 2010
2 голосов
/ 05 мая 2010

Имейте в виду, что MVVM кажется подходящим только для приложений с одним окном. Я погрузился в WPF, основываясь на неопытности и общих рекомендациях о том, что он лучше всего подойдет для проекта киоска, особенно проекта, в котором клиент дал мне фотошоп-изображения всех экранов приложения. Наличие крутой графики было требованием для этого проекта, и мне понравилось смутное сходство WPF с веб-разработкой.

Я обнаружил несколько недостатков

1) нет такой вещи, как официальный инструментарий MVVM. Их много, все они поддерживаются отдельным человеком. Год назад был отодвинут на второй план инструментарий Microsoft, и поддержка VS2010 отсутствует.

2) программирование приложения для нескольких окон, что-то вроде простого мастера с возвратом вперед и назад, просто кошмар. Я вышел из этого с чистым дизайном, определяющим делегата для каждого действия пользовательского интерфейса и команду для каждого бизнес-действия, но все же я думаю, что слишком много участия в платформе, чтобы оправдаться, и вы не можете показать результаты своих тестов этот клиент ожидает волнение.

3) Вы отказываетесь от привычки двойного нажатия на кнопку и добавления некоторого кода. Это оставляет неприятное чувство от использования IDE против его природы. В основном вы используете Visual Studio в качестве текстового редактора и дизайнера интерфейсов, но с помощью этого инструмента.

Плюсы на данный момент:

1) определение визуальных компонентов очень гибкое, быстрое и простое, и вы можете выбирать между VS и Expression Blend. Анимации просты в создании.

2) привязка данных упрощает применение. Вы определяете DataContext и привязки, и вам не нужно перемещать данные из бизнес-логики в интерфейс самостоятельно, если у вас есть свойство для всего, что должно отображаться.

3) Вы можете уменьшить количество бизнес-логики в интерфейсе до нуля. Поведение приложения легко отделить от его внешнего вида, поэтому вы можете без особых усилий обработать интерфейс десятью способами и протестировать всю логику, не открывая окно.

4) вы оставляете дверь открытой, чтобы идти с Silverlight, если вас спросят.

Мой вывод таков: если вы имеете в виду приложение MDI, вы можете столкнуться с большими проблемами. Вы должны знать, что если вы выберете WPF, вы будете пахать почву для будущих поколений, а не садиться в поезд, который доставит вас туда быстро и легко. Не существует установленного способа делать вещи, особенно те, которые не охватываются демонстрациями.

Инструментарий, учитывая все обстоятельства, не так важен, и каждый из них будет вам полезен. На самом деле пары поддерживающих классов достаточно, чтобы начать, и здесь нет причудливых волшебников, вы должны следовать соглашениям.

Вы даже можете сделать свой собственный, если несколько часов, как только вы поймете, что в логике. Недостатком является то, что вам придется по-настоящему понять это, чтобы изменить приложение по-своему.

Как я уже говорил выше, мне пришлось многому научиться, чтобы показать новое представление, когда они нажимают кнопку, сохраняя код в чистоте. Потратьте время, чтобы посмотреть видео, на которые ссылались ранее, в StackOverflow , что сэкономит ваше время.

1 голос
/ 05 мая 2010
1 голос
/ 05 мая 2010

Попав в WPF в этом году, самым важным для меня было изучение того, как использовать шаблон View-Model для представления модели для отделения представления от логики приложения. Как правило, если вы обнаружите, что вы размещаете много кода в коде на ваш взгляд, то вы «делаете это неправильно».

Я обнаружил, что, исходя из фона WinForms, я вставлял множество обработчиков событий и делал что-то в своем коде. По мере знакомства с функциями MVVM и WPF я обнаружил, что смог удалить большую часть своего кода и заменить его представлениями, привязанными к моделям представления.

Именно такие статьи от Джоша Смита помогли мне начать работу с MVVM:

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

Как только вы начали изучать привязки MVVM представления данных, взгляните на команды и, в частности, интерфейс ICommand. Они являются основным механизмом, с помощью которого действия пользователя инициируют выполнение операций. Поэтому вместо того, чтобы иметь обработчик OnClick для кнопок, вы привязываете свойство Command кнопки в XAML к свойству в вашей модели представления, которое предоставляет реализацию ICommand.

Мой 2с - Донован

1 голос
/ 05 мая 2010

если вы ищете книги, просто посмотрите на этот предыдущий пост

Какие книги WPF вы бы порекомендовали?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...