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

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

Но с другой стороны многие вещи работают с WPF. Я не буду говорить, что это сложнее, но вы должны учиться "все" с нуля.

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

Ответы

Ответ 1

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

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

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

Определяет ли процентная доля вашей целевой клиентской базы встроенные графические чипсеты, которые могут не поддерживать функции, которые вы планировали, или они все еще работают под управлением Windows 2000, что полностью устранит их как клиентов? Некоторые люди также спрашивают, действительно ли ваши клиенты заботятся об улучшенных визуальных эффектах, но, пережив внутреннюю дискуссию "Наши бизнес-клиенты не заботятся о цветах и ​​фотографиях" в начале 90-х годов, я знаю, что хорошо разработанные решения от ваших конкурентов сделают их заботой, и реальный вопрос заключается в том, являются ли условия правильными, чтобы вы могли предложить что-то, что сделает их заботой ТЕПЕРЬ.

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

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

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

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

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

Ответ 2

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

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

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

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

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

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

Отладка приложений WPF немного похожа на старую парадигму отладки ASP.NET... hit F5 → wait → launch → error → stop → fix → hit F5 → wait → start → error → groan → stop → fix → hit 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, мой ответ здесь остается неизменным, и я хотел бы добавить следующее предложение:

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

Ответ 3

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

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

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

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

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

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

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

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

Это кажущееся тонкое различие, но это имеет огромное значение в вашей способности повторно использовать код..., который вызывает вопрос: "Является ли вопрос Windows Forms vs WPF фактически инвестиционным решением?"

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

Ответ 4

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

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

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

  • Наибольшую разницу имеют фантастические привязки данных и шаблоны. После того, как будет создана достойная модель данных, для создания шаблона данных потребуется всего несколько кликов и используйте Expression Blend, чтобы точно настроить, как ваш объект будет выглядеть с помощью drag-and-drop. И привязка к вещам, как цвет или форма, тривиальна.
  • Раскладка экрана невероятно гибкая. Мало того, что все в WPF плавно регулирует размеры и размеры контейнера, но элементы можно тривиально увеличивать и поворачивать и даже выходить за пределы их рамки.
  • Обычные объекты могут быть представлены любым удобным вам способом, могут легко иметь разные презентации на разных экранах, делиться презентацией и адаптировать свою презентацию к изменениям значений данных.
  • Если вам нужно распечатать, рендеринг на принтер тривиален. Правильно настроенный WPF делает Crystal Reports или SQL Server Reporting Services (SSRS) выглядят как детская игрушка.
  • Ваш пользовательский интерфейс будет выглядеть и чувствовать себя намного более динамично, включая приятные функции, такие как кнопки, которые оживляют, когда вы пропустите мышь над ними.

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие идеи

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

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

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

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

Ответ 5

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

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

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

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

Ответ 6

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

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

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

  • Набор управления WPF в ящике гораздо более ограничен, чем в Windows Forms.
  • Там больше поддержки в стороннем пространстве управления для Windows Forms. (Это, конечно, меняется, но подумайте об этом: Windows Forms существует с 2001 года, WPF - всего несколько лет. Пользуясь временем, Windows Forms имеет большую поддержку в сообществе.)
  • Большинство разработчиков уже знают Windows Forms; WPF предоставляет новую кривую обучения

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

Ответ 7

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

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

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

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

Ответ 8

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

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

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

Ответ 9

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

Ответ 10

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

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

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

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

Ответ 11

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

Вся концепция позволяет упростить дизайн IMO.

Ответ 12

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

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

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

Ответ 13

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

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

Ответ 14

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

Также возможно переносимость, WPF работает только с Windows XP SP2 и выше.

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

Ответ 15

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

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

Ответ 16

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

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

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

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

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

Ответ 17

Есть много различий. Мы любили WPF за:

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

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

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

Ответ 18

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

Ответ 19

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

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

Ответ 20

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

(Несколько ответов утверждают, что вы должны использовать WPF, если дизайн интерфейса "важен для вас", но это довольно сложно. Дизайн интерфейса всегда "важен".)

Ответ 21

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

Ответ 22

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

Ответ 23

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

Ответ 24

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

Ответ 26

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

Ответ 27

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

Ответ 28

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

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

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

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

Ответ 29

Цитата из более ранней публикации от Марка:

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

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

Ответ 30

Поддержка WPF для декларативного интерфейса через XAML, богатые шаблоны управления и стилизации и инструменты, такие как Expression Blend, значительно улучшают для дизайнеров работать с разработчиками по тому же проекту. Кроме того, он дает разработчикам гибкость связанных свойств зависимостей и чрезвычайно мощную привязку данных. Кроме того, Silverlight поддерживает подмножество XAML и те же классы управления, что и WPF, поэтому ваше приложение можно с минимальными усилиями портировать как RIA. p >

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

Единственная причина, по которой я могу решить использовать Windows Forms, - это то, что продукт будет развернут на компьютерах, которые заблокированы и имеют только .NET 2.0 или .NET 1.1.