Является ли WPF предпочтительным выбором при создании нового графического пользовательского интерфейса по сравнению с Windows Forms?[закрыто]

StackOverflow https://stackoverflow.com/questions/57909

Вопрос

Большинство ограничений и приемов работы с формами Windows свойственны большинству программистов.Но начиная с .NET 3.0 доступен также WPF, Windows Presentation Foundation.Говорят, что с его помощью можно упростить «сексуальные приложения», а с .NET 3.5 SP1 он получил хороший прирост скорости выполнения.

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

Мой вопрос:Стоит ли тратить дополнительное время, когда вам нужно создать новый графический интерфейс и нет ограничений по времени для проекта?

Это было полезно?

Решение

WPF позволяет вам делать удивительные вещи, и мне это ОЧЕНЬ нравится...но я всегда чувствую себя обязанным уточнять свои рекомендации, когда разработчики спрашивают меня, считаю ли я, что им следует переходить на новую технологию.

Готовы ли ваши разработчики (желательно EAGER) тратить время на то, чтобы научиться эффективно использовать WPF?Мне бы никогда не пришло в голову сказать такое о MFC, или Windows Forms, или даже о неуправляемом DirectX, но вы, вероятно, НЕ хотите, чтобы команда пыталась «подобрать» WPF в ходе обычной разработки.цикл доставки товара!

Есть ли у хотя бы одного или двух ваших разработчиков некоторые дизайнерские способности, и есть ли у людей с окончательными полномочиями в области дизайна хорошее понимание проблем разработки, чтобы вы могли использовать возможности WPF для создания чего-то, что на самом деле ЛУЧШЕ, а не просто более «красочное» , с бесплатной анимацией?

Работает ли какой-то процент вашей целевой клиентской базы на наборах интегрированных графических чипов, которые могут не поддерживать запланированные вами функции, или они все еще используют Windows 2000, что полностью исключит их из числа клиентов?Некоторые люди также могут спросить, действительно ли ваши клиенты ЗАНИМАЮТСЯ улучшенными визуальными эффектами, но, пройдя через внутренние дебаты компании «Наши бизнес-клиенты не заботятся о цветах и ​​изображениях» в начале 90-х годов, я знаю, что хорошо продуманные решения от ваших конкурентов ЗАСТАВИТ их позаботиться, и настоящий вопрос в том, подходящие ли условия, чтобы вы могли предложить что-то, что заставит их позаботиться СЕЙЧАС.

Включает ли проект основательную разработку, по крайней мере, уровня представления, чтобы избежать дополнительных сложностей, связанных с попытками подключения к несовместимым устаревшим каркасам (взаимодействие с Win Forms НЕ является бесшовным)?

Может ли ваш менеджер смириться (или отвлечься от внимания) со значительным снижением продуктивности разработчиков в течение четырех-шести месяцев?

Эта последняя проблема связана с тем, что мне нравится называть «FizzBin»-природой WPF, с десятью различными способами реализации любой задачи, без видимых причин предпочитать один подход другому, и с небольшим количеством доступных руководств, которые помогут вам сделать выбор.Мало того, что недостатки любого выбора, который вы сделаете, станут очевидными только намного позже в проекте, но вы практически гарантированно увидите, что каждый разработчик вашего проекта примет другой подход, что приведет к серьезной головной боли при обслуживании.Больше всего расстраивают несоответствия, которые постоянно сбивают вас с толку, когда вы пытаетесь изучить структуру.

Более подробную информацию о WPF можно найти в записи моего блога:

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

Другие советы

После трех месяцев попыток выработать отрасль производства (LOB) в WPF, я решил вернуться к Windows Forms для своего проекта и, изучая мнения других людей, наткнулся на эту ветку...

Да, WPF — блестящая технология, и ее преимущества выходят далеко за рамки простого удовольствия…Отличными примерами являются возможности шаблонов и связывания.Вся объектная модель предлагает большую гибкость и более широкие возможности.Однако это не делает его де-факто платформой для будущих бизнес-приложений.

«Проблемы», которые WPF решает с точки зрения отделения графического пользовательского интерфейса от бизнес-логики, не являются проблемами, которые нельзя легко решить в Windows Forms, просто начав с правильной архитектуры и мышления.Даже возможности привязки путей к объектам WPF можно воспроизвести в Windows Forms с помощью некоторых очень простых вспомогательных классов.Возможности шаблонов данных WPF очень хороши, но, опять же, их нельзя смоделировать в Windows Forms в тех редких случаях, когда вы совершенно не знаете точно, какие объекты вы собираетесь представлять в той или иной части файла. экран.

Windows Forms выходит вперед с точки зрения зрелости.Вы не можете махнуть дохлой кошкой в ​​Google, не зайдя в какой-нибудь блог, где кто-то решил за вас проблему с Windows Forms.WPF, с другой стороны, имеет сравнительно меньше доступных обучающих ресурсов, меньше доступных пользовательских элементов управления и не так много решенных проблем.

На пике принятия решения о выборе WPF или Windows Forms должна быть зрелость среды разработки.Редакторы Windows Forms удобны, отзывчивы и интуитивно понятны.Отзывы об ошибках поступают мгновенно, решения обычно очевидны, а цикл компиляции->отладки->редактирования в Windows Forms выполняется очень быстро.

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

Отладка приложений WPF немного похожа на старый Парадигма отладки ASP.NET...ударять F5 -> подождать -> запустить -> ошибка -> остановить -> исправить -> нажать F5 -> подождать -> запустить -> ошибка -> стон -> остановиться -> исправить -> ударить F5....Весь XAML, который выполняет ваша программа, заблокирован, и отслеживание конкретных проблем XAML часто утомительно.

Суть, проще говоря, в том, что инструменты разработки для Windows Forms позволят вам создавать интерфейсы за долю времени, потраченного на приложение WPF... особенно если вы создаете сетки «основные-детали» или интерфейсы, подобные электронным таблицам, которые есть у большинства LOB.Используя Windows Forms, вы начинаете с того, что 90 % работы уже сделано за вас.

Я большой поклонник архитектуры WPF.Мне просто хотелось бы, чтобы набор инструментов времени разработки не напоминал отладочную сборку предварительной альфа-версии.


Редактировать:Этот ответ был опубликован о .NET 3.5 + Visual Studio 2008, но .NET 4.0 с Visual Studio 2010 поставляется с сеткой данных WPF.Несмотря на то, что в новый процесс разработки WPF было внесено множество улучшений, мой ответ остается неизменным, и я хотел бы добавить следующее предложение:

Если ты торопишься сделать РАД разработки, используйте Windows Forms.Если вы хотите создать хорошо спроектированное, легко поддерживаемое, масштабируемое, ресурсоемкое, многопользовательское бизнес-приложение, рассмотрите ASP.NET MVC + HTML 5 + jQuery...Мои проекты с использованием этих технологий привели к более быстрым результатам для моих клиентов.MVC предлагает все те же шаблоны, что и WPF, а jQuery обеспечивает анимацию и сложные взаимодействия.Что еще более важно, решение ASP.NET MVC + jQuery не требует от конечных пользователей наличия современных настольных компьютеров с достойным графическим оборудованием.

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

В общем, комментарии, которые я сделал выше, остаются в силе...Поддержка времени разработки для WPF еще не реализована.Если вы очень спешите выпустить полнофункциональное клиентское приложение, выберите Windows Forms.Период.Microsoft не торопится прекращать выпуск платформы GDI/Windows Forms, поэтому вы можете рассчитывать на хорошую поддержку в течение длительного времени.

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

Например, в WPF ваши инвестиции в хорошо написанные бизнес-объекты с продуманной логикой проверки являются надежными инвестициями.В отличие от Windows Forms, привязка данных WPF полна функций, которые позволяют элементам управления интерфейса реагировать на недопустимый ввод пользователя. без написания кода графического интерфейса чтобы обнаружить эти ошибки.Это ценно.

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

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

В двух словах:

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

Это, казалось бы, незначительная разница, но она имеет огромное значение для вашей способности повторно использовать код...что вызывает вопрос:«Является ли вопрос Windows Forms и WPF инвестиционным решением?»

(Кажется, это стало моей любимой темой.)

Есть ли веские причины использовать WPF?

Абсолютно!WPF просто невероятен!Это будет большим преимуществом практически для любого проекта, поскольку у него так много функций и возможностей, которых нет в Windows Forms.

Для бизнес-приложений наибольшими преимуществами будут:

  • Фантастическая привязка данных и шаблоны имеют самое большое значение.Как только будет создана достойная модель данных, потребуется всего несколько щелчков мышью, чтобы создать шаблон данных и использовать его. Смесь выражений чтобы точно настроить, как будет выглядеть ваш объект, с помощью перетаскивания.А привязка к таким вещам, как цвет или форма, тривиальна.
  • Расположение экрана невероятно гибкое.Все в WPF может не только плавно подстраиваться под изменения размера и формы контейнера, но и элементы можно легко увеличивать и поворачивать и даже выходить за пределы содержащего их фрейма.
  • Обычные объекты могут быть представлены любым удобным для вас способом, могут легко иметь разные представления на разных экранах, могут совместно использовать представление и адаптировать свое представление к изменениям значений данных.
  • Если вам нужно распечатать, рендеринг на принтере тривиален.При правильной настройке WPF делает Кристаллические отчеты или Службы отчетов SQL Server (SSRS) выглядят как детская игрушка.
  • Ваш пользовательский интерфейс станет намного более динамичным, включая такие приятные функции, как кнопки, которые анимируются, когда вы наводите на них указатель мыши.

Для утилит и игр на первый план выходят другие преимущества:

  • Вы можете легко добавлять в приложение фигуры, линии и произвольные рисунки без использования внешнего редактора.Каждый их компонент может быть привязан к данным и анимирован или управляться кодом.В Windows Forms вам обычно просто нужно импортировать растровое изображение и использовать его как есть, если только вы не хотите выполнять много работы.
  • Анимации крутые!Пользователи будут очень впечатлены, если вы не переусердствуете.Они также могут помочь людям увидеть, что происходит, и уменьшить потребность в подсветке.Например, при перетаскивании объекта вы можете анимировать цель, чтобы показать, что произойдет, если вы ее уроните.
  • Цвета, градиентные заливки, кисти, необычные шрифты, вращение любых объектов, мозаичные кисти и т. д.Все, что вы хотите графически, по вашему желанию.
  • Невероятно настраиваемый.Мне нужно было нарисовать железнодорожные пути для одного приложения, чтобы можно было сбросить на них поезд.Пару часов спустя у меня появились железнодорожные пути, которые я мог нарисовать в любом месте экрана с помощью Кривые Безье, и они автоматически присоединялись и переключались.

Суть в том, что любой графический интерфейс значительного размера, который вы можете создать в Windows Forms, может быть построен в WPF за треть усилий (или меньше) и выглядеть намного лучше.

Требует ли WPF больше ресурсов (в частности, ОЗУ)

Вы платите цену по сравнению с Windows Forms, но она небольшая.

  • Объем оперативной памяти может увеличиваться или уменьшаться в зависимости от вашей реализации.WPF хранит свои данные более эффективно, поэтому отдельные объекты становятся меньше, но в WPF, как правило, больше объектов, чем в Windows Forms, поэтому это уравновешивается, и любой из них может выйти вперед.
  • ЦП вырастет по сравнению с Windows Forms.По моему опыту, фактическое обновление объектов WPF на экране требует примерно вдвое больше ресурсов ЦП, чем обычный рендеринг Windows Forms.Если ваше приложение тратит большую часть времени на обновление экрана, возможно, WPF вам не подойдет.Но в этом случае вы, вероятно, также не используете Windows Forms:Большинство серьезных игр пишутся непосредственно на ДиректХ.
  • Использование диска будет немного меньше для WPF, поскольку для него требуется гораздо меньше кода, чем для Windows Forms.Разумеется, данные будут одинакового размера.

Еще одно замечание по поводу использования процессора:Анимация и преобразования (движение, перевод и т. д.) на самом деле более эффективны в WPF, чем в Windows Forms, из-за сохранения режима хранения.Медленнее происходит первоначальное перемещение объектов наверх.

Накладные расходы на техническое обслуживание

WPF — это огромный победить Windows Forms, когда дело доходит до обслуживания.Поскольку все делается в 1/5 меньшего количества кода, чем раньше, приходится поддерживать 1/5 меньше кода.Кроме того, все шаблонные элементы исчезли, поэтому вы можете сосредоточиться на коде, который действительно выполняет всю работу.

Преимущества XAML

XAML является ядром WPF.Хотя WPF можно использовать без XAML, XAML делает его невероятно простым в использовании.В XAML есть возможность HTML легко определять пользовательский интерфейс, но его встроенные теги гораздо мощнее, и вы можете легко определить свои собственные.(На самом деле это нормально).

Некоторые конкретные преимущества XAML:

  • Весь ваш пользовательский интерфейс определяется в текстовом файле, который легко читать и манипулировать как пользователями, так и инструментами.
  • MarkupExtensions позволяют указывать привязки понятным и простым способом.
  • Преобразователи типов позволяют легко указывать свойства со сложными типами.Например, вы можете сказать Brush="Green" или указать кисть с радиальным градиентом с тремя остановками.
  • Вы можете создавать свои собственные элементы
  • Вы можете легко использовать мощные «прикрепленные свойства» WPF.

Другие идеи

Я много лет мечтал о чем-то вроде WPF.Многие люди реализовали часть этой функциональности, но получить все это в одном месте и по такой цене (0 долларов США) — это потрясающе.

WPF представляет собой огромный сдвиг парадигмы по сравнению с Windows Forms, и к нему потребуется некоторое привыкание, но время, потраченное на его изучение, окупится многократно.

У WPF все еще есть несколько недостатков даже пять лет спустя, но его мощь сразит вас наповал, как только вы с ним столкнетесь.Если кто-то попытается перетащить вас обратно в Windows Forms, вы будете только пинаться и кричать.

Советы:- Получите копию смешивания выражения для разработки - делайте редактирование XAML вручную - не сдавайся, когда сначала кажется странным странным

Для WPF требуется либо Windows Vista, либо Windows XP SP2, что не является обременительным, но актуальным требованием.Если вы хотите работать в Windows 2000 (что некоторые люди до сих пор делают), то WPF вам не подойдет.

WPF также является более новой технологией и не так проверена, как Windows Forms, поэтому вы можете выбрать Windows Forms как менее рискованный вариант, особенно для более крупных приложений.

При этом да, за WPF будущее.Visual Studio 2010 переписывается на WPF, который, вероятно, станет крупнейшим приложением WPF на сегодняшний день, а также станет настоящим испытанием для технологии.

Очевидно, что устаревшие приложения Windows Forms будут еще одной ситуацией, когда это будет правильным выбором.

Как уже говорили другие, в любом случае есть свои преимущества и недостатки.Преимущества WPF, как говорили другие, включают в себя:

  • Возможность создавать очень богатые пользовательские интерфейсы. относительно легко.
  • Упрощенная анимация и спецэффекты
  • Присущая масштабируемость (используйте инструмент лупы Windows Vista в приложении WPF и в приложении Windows Forms:Обратите внимание, что в приложении WPF все векторные изображения прекрасно масштабируются.)
  • (МНЕНИЕ ПРЕДУПРЕЖДЕНИЕ) Я чувствую, что «проще» создавать документо-ориентированные системы в WPF.

Однако у WPF есть недостатки, где Windows Forms выходит на первое место:

  • Встроенный набор элементов управления WPF гораздо более ограничен, чем пакет Windows Forms.
  • В стороннем пространстве управления для Windows Forms имеется более широкая поддержка.(Конечно, ситуация меняется, но подумайте об этом:Windows Forms существует с 2001 года;WPF всего несколько лет.Благодаря времени Windows Forms пользуется большей поддержкой в ​​сообществе.)
  • Большинство разработчиков уже знакомы с Windows Forms;WPF предоставляет новую кривую обучения

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

Модель программирования для WPF более открыта и гибка, чем Windows Forms, но, как и ASP.NET MVC, она требует немного большей дисциплины с точки зрения правильной реализации шаблонов Model-View-ViewModel.

Мой первый ЛОБ Приложение с WPF закончилось полным провалом, потому что оно было ресурсным ресурсом, который привел к остановке очень дешевых ноутбуков моего конечного пользователя...и в конечном итоге это произошло потому, что я только что начал работать с WPF + LINQ to SQL и ожидал хорошего результата...и именно здесь WPF так сильно отличается от Windows Forms...В Windows Forms подобные вещи могут сойти с рук.WPF потребляет гораздо больше ресурсов, чем Windows Forms, и если вы не спроектируете свое приложение так, чтобы оно было экономичным, в итоге вы получите 800-фунтовую гориллу.

Не уклоняйтесь от WPF...исследуйте это.Но имейте в виду, что допустимые недостатки кодирования Windows Forms не дадут хороших результатов в WPF.Это принципиально разные движки, которые подходят для принципиально разных шаблонов кодирования.

Последнее слово:Если вы все-таки продолжите использовать WPF, хорошо ознакомьтесь с виртуализацией данных для использования со списками и сетками.То, что представляет собой простой ListItem или GridCell с привязкой к данным, в конечном итоге превращается в здоровенный логический + визуальный объектный граф в WPF, и если вы не научитесь виртуализировать, ваше приложение не будет хорошо работать с большими наборами данных.

Кривая обучения WPF очень сложна, и я рекомендую вам сначала прочитать очевидные книги (Адам Натан, Селлс/Гриффитс, иКрис Андерсон) и блоги (Джош Смит, и т. д.).Просто будьте к этому готовы и убедитесь, что ваш проект дает вам время на изучение WPF.

Помимо изучения технологии, потратьте некоторое время на изучение шаблонов, используемых для создания приложений WPF. Представление модели (MVVM), похоже, получил широкое признание.

Лично я считаю, что WPF того стоит, но имейте в виду.Также обратите внимание, что вы фактически ограничиваете своих пользователей Windows XP SP2+ и Windows Vista.Мы приняли такое решение, но у вас могут быть другие требования.

Обе технологии имеют свои плюсы и минусы.В большом приложении с «классическим» пользовательским интерфейсом я бы использовал Windows Forms.В приложении, которому требуется богатый пользовательский интерфейс (оформление скинов, анимация, изменение пользовательского интерфейса), я бы выбрал WPF.Пожалуйста, проверьте статью WPF против.Формы Windows сравнение WPF и Windows Forms.

Помимо гибкости в дизайне пользовательского интерфейса, у WPF есть некоторые технические преимущества:

1.) WPF не полагается на объекты GDI. Ну, я думаю, что для экземпляра самого окна он использует 2 объекта GDI, но это практически ничего.В определенной степени я принимал участие в очень большом внутреннем приложении Windows Forms.Люди в нашем офисе иногда запускают 3 или 4 экземпляра одновременно.Проблема в том, что они часто достигают ограничения в 10 000 объектов GDI, свойственного Windows 2000, XP и Vista.Когда это произойдет, вся ОС перестанет отвечать на запросы, и вы начнете видеть визуальные артефакты.Единственный способ это исправить — закрыть приложения.

2.) WPF использует графический процессор. Возможность WPF переложить часть обработки пользовательского интерфейса на графический процессор великолепна.Я только ожидаю, что этот аспект со временем станет лучше.Как бывший любитель программирования OpenGL, я могу оценить мощь графического процессора.Я имею в виду, что моя видеокарта за 100 долларов имеет 112 ядер, работающих на частоте 1,5 ГГц каждое (и это ни в коем случае не является высшим показателем).Такая мощность параллельной обработки может посрамить любой четырехъядерный процессор.

Однако WPF все еще довольно нов.Он не будет работать в Windows 2000.Фактически, приложение WPF может медленно запускаться после новой перезагрузки.Обо всем этом я рассказываю в своем блоге:http://blog.bucketsoft.com/2009/05/wpf-is-like-fat-super-hero.html

Я думаю, стоит изучить WPF.ИМХО, как только вы освоитесь, работа над дизайном ваших форм станет намного проще.Я бы не стал так сильно беспокоиться о «сексуальных» вещах.По большей части это просто прихоть.В WPF можно очень быстро и легко создавать «обычные» приложения в стиле Winforms.

Вся концепция, по моему мнению, упрощает проектирование.

Я не согласен с некоторыми ответами здесь.WPF действительно хорошо подходит для отрасль производства (LOB) приложения.(Лучшим примером является LOB-клиент дизайна лягушки).И помимо всех возможностей сделать ваш пользовательский интерфейс приятным для глаз (что не обязательно в бизнес-приложениях), WPF предлагает вам гораздо больше.

Функции привязки данных и создания шаблонов просто превосходят Windows Forms.Он также предлагает гораздо лучший способ разделения кода и представления.Мы успешно использовали WPF для двух бизнес-приложений в командах, состоящих не более чем из 2–3 разработчиков.

Самая большая проблема, с которой вы столкнетесь, — это, вероятно, крутая кривая обучения WPF (по сравнению с Windows Forms), что снизит скорость разработки для разработчиков, не привыкших к WPF.

В настоящее время мы переписываем наше приложение на WPF из Windows Forms.Да, обучение требует крутого подхода, и вам придется «переучиваться» некоторым вещам, но оно того стоит.А в сочетании с WCF мы обнаруживаем, что пишем меньше кода, быстрее и надежнее, чем когда-либо прежде.

Потерпите немного, прочтите Книга Адама Натана, и ознакомьтесь с постоянно растущей библиотекой сторонних элементов управления, например, от Телерик и КомпонентОдин.Одним из недостатков, на мой взгляд, является то, что инструмент проектирования, Смесь выражений, очень неудобно использовать.Последняя версия все еще находится в стадии бета-тестирования, но она не подходит тем из нас, кто использовал Visual Studio в течение многих лет.Да, это в основном для дизайнеров, но некоторые вещи просто невозможно сделать в Visual Studio.

Если для вас важен дизайн интерфейса, рассмотрите WPF, поскольку WPF может обеспечить лучший пользовательский интерфейс.Но Windows Forms имеет на своей стороне годы эволюции, поэтому она доказала свою эффективность, и вы можете найти много опытных программистов для этой платформы.

Кроме того, проблема может возникнуть с переносимостью: WPF работает только с Windows XP SP2 и более поздних версий.

Кроме того, WPF требует сложного обучения, а это значит, что непросто создавать качественный продукт, не имея специального опыта работы с WPF.

Что ж, один из ответов: «когда вам нужно поддерживать версию 1.1 или 2.0», поскольку WPF является частью .NET 3.0.Существуют известные ограничения ОС для WPF, а также существует очевидная проблема с навыками:если у вас есть команда разработчиков, знающих WinForms, возможно, будет проще создать надежный код. с Winforms.Однако, если вы пишете много кода пользовательского интерфейса, возможно, в какой-то момент стоит начать использовать WPF.

WPF также имеет много общего с Silverlight, поэтому у него есть передаваемые преимущества.

WPF поставляется со многими преимуществами, такими как превосходные функции связывания данных, разделение проблем, разделение дизайна, логики и т. Д.

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

Лично мне не волнует старые версии Windows не поддерживаются, но одна из больших проблем с WPF заключается в том, что (в настоящее время/когда -либо) поддерживается Mono (http://www.mono-project.com), поэтому приложения WPF не будут работать в Mac OS или Linux.(Хотя приложения Silverlight будут).

Если у вас есть время и ресурсы для изучения WPF, сделайте это!Даже если вы собираетесь писать приложения Silverlight для поддержки нескольких ОС.

Если вам нужны настольные приложения для запуска на нескольких ОС, используйте SWF.

Есть много различий.Нам понравился WPF за:

  1. Декларативный стиль программирования.
  2. Анимации и переходы между состояниями
  3. Expression Blend — отличный инструмент
  4. Хорошая поддержка стиля.

Однако мы остановились на Windows Forms, потому что:

  1. Дополнительное время, необходимое разработчику, чтобы изучить WPF, когда они уже знают формы Windows.
  2. WPF не будет работать в Windows 2000 или ниже.

Самый важный момент при принятии решения о том, какой из них использовать, — это учитывать, какой .NET Framework установлен у вашей целевой аудитории.Я обнаружил, что больше людей используют более низкие версии .NET Framework, поддерживающие только Windows Forms, но это всего лишь мой личный опыт.

Преимущества WPF заключаются в том, что гораздо проще создавать красивые графические интерфейсы с настраиваемыми элементами управления и анимацией.WPF также помогает дополнительно разделить уровни представления и логики.Если у вас есть дизайнеры, это позволяет вам поручить 95% этой работы непрограммистам, а программистам — работать над логикой.Недостатками являются затраты на программное обеспечение для Expressions Blend и отсутствие каких-либо хорошо работающих инструментов профилирования кода Visual Studio, поскольку они имеют тенденцию отвлекаться на вызовы фреймворков при попытке отобразить XAML.Я уверен, что есть и другие, но это были единственные двое, которых мы действительно видели.

Основное соображение заключается в том, хотите ли вы потребовать от своих клиентов установки .NET 3.0 или, что еще лучше, .NET 3.5 SP1.Вы получите отрицательный отзыв

WPF значительно упрощает передачу работы по дизайну форм реальному дизайнеру, а не разработчику дизайнерской одежды.Если вы хотите это сделать, WPF — ваш ответ.Если кнопки в классическом стиле Windows подходят, то Windows Forms, вероятно, подойдет.

(Во многих ответах утверждается, что вам следует использовать WPF, если дизайн интерфейса «важен для вас», но это довольно расплывчато.Дизайн интерфейса всегда «важен».)

Если у вас есть лицензия MSDN, проверьте Инструменты выражения.Он разработан специально для WPF, экспортируется непосредственно в Visual Studio и может облегчить ваш переход.

Если вас интересует только поддержка Windows и вы не против потратить время на ее изучение, выберите WPF.Он быстрый, гибкий, легко меняет внешний вид и имеет отличные инструменты для работы с ним.

В качестве дополнительного бонуса Silverlight основан на WPF, и, начав с одного из них, вы сможете узнать, как работать с другим.Если все будет продолжать работать через Интернет, наличие предварительных знаний (и библиотеки существующего кода), которые можно легко перенести в браузер (или Windows Live Mesh), может помочь дать вашему программному обеспечению дополнительную жизнь.

Если вы решите использовать WPF, учитывая плюсы и минусы, уже объясненные в ответах выше, я настоятельно рекомендую пройти через это. Эпизод dnrTV с Билли Холлисом

В DotNetRocks, серия 315, Брайан Нойес подробно обсуждает это.

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

Последние три с половиной года я занимался разработкой Windows Forms (в двух компаниях).Оба приложения широко использовались, и в итоге у них возникли проблемы с GDI.Большие приложения Windows Forms в конечном итоге исчерпают ресурсы GDI, что приведет к необходимости перезагрузки конечного пользователя.

Скотт жалуется на Expression Blend и что для него как для разработчика это не имеет смысла.Моя первая реакция на Expression Blend была такой.Однако теперь я рассматриваю это как бесценный инструмент, но это действительно зависит от того, какой вы разработчик.

Я разработчик пользовательского интерфейса, которому пришлось выполнить Интегратор роль, и в конце концов я обнаружил, что Expression Blend бесценен для создания стилей и управления шаблонами в режиме WYSIWYG.Я почти всегда использую Expression Blend и Visual Studio, работающие над одним и тем же проектом одновременно.

Я также думаю, что поигравшись с Expression Blend и взглянув на XAML то, что выплевывают, - отличный способ изучить WPF API...Подобно использованию конструктора в Windows Forms и проверке кода C#, который он выдает, полезно научиться использовать все, что вы там проектируете.

Expression Blend полезен.Просто попробуйте, особенно если вы работаете над визуальными эффектами для приложения.

Цитата из предыдущий пост от Марка:

  • В Windows Forms вы проектируете свой пользовательский интерфейс, а затем пишете код для управления этим пользовательским интерфейсом, который обычно также включает в себя код для управления вашими объектами данных.
  • В WPF вы инвестируете в бизнес-уровень, который управляет вашими объектами данных, а затем разрабатываете интерфейс, который слушает ваши объекты данных.

Я бы сказал, что это скорее выбор дизайна, а не то, используете ли вы Windows Forms или WPF.Однако я понимаю, что определенные технологии могут лучше подходить для конкретного подхода.

Только если у вас нет опыта работы с WPF и вы не хотите в него вкладывать деньги :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top