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

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

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

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

30 ответов


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

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

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

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

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

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

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

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

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


после трех месяцев попыток выбить бизнес (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 гладкие, отзывчивые и интуитивно понятные. Обратная связь об ошибках доходит до вас мгновенно, решения обычно очевидны, и цикл компиляции->отладки->редактирования в Windows Forms очень быстрый.

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

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

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

Я большой поклонник архитектуры WPF. Я просто хочу, чтобы набор инструментов design-time не чувствовал себя как pre-alpha отладочная сборка.


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

Если вы в спешке, чтобы сделать рад разработка, перейти с Windows Forms. Если вы ищете произвести хорошо architected, то maintainable, масштабируемый, ресурс firendly, многопользовательское бизнес-приложение, рассмотрим 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 переполнена функциями, которые позволяют интерфейсным элементам управления реагировать на недопустимый пользовательский ввод без написания кода GUI для обнаружения этих ошибок. Это ценно.

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

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

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

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

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

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


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

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

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

  • фантастическая привязка данных и шаблоны делают самую большую разницу. Как только приличная модель данных будет создана, для создания шаблон данных и использование Выражение Blend чтобы точно настроить, как будет выглядеть ваш объект с помощью перетаскивания. И привязка к таким вещам, как цвет или форма, тривиальна.
  • макет экрана невероятно гибкий. Мало того, что все в 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. Данные, конечно, будут того же размера.

еще одна заметка о CPU использование: анимация и преобразования (перемещение, перевод и др.) на самом деле более эффективен в 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, вы будете только брыкаться и кричать.

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


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

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

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

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


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

  • возможность сделать очень богатым UIs относительно легко.
  • проще анимация и специальные эффекты
  • собственная масштабируемость (используйте средство Windows Vista magnifier в приложении WPF и в приложении Windows Forms: обратите внимание, что в приложении WPF все векторные художественные масштабы красиво)
  • (OPINION ALERT) я чувствую, что "легче" делать документоориентированные системы в WPF

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

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

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


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

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

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

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


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

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

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


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


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

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

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

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


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

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


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

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

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


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

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


рассмотрите 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. (Altough Silverlight приложений будет).

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

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


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

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

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

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

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


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

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


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

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


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


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


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


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


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


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


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


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

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

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

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


цитата более раннее сообщение от Марка:

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

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


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