При создании нового графического интерфейса WPF является предпочтительным выбором для Windows Forms?
Большинство ограничений и трюков с формами окон являются общими для большинства программистов. Но так как .NET 3.0 есть также WPF, Windows Presentation Foundation. Говорят, что вы можете сделать «сексуальные приложения» более легкими с ним, а с .NET 3.5 SP1 он получил хорошее ускорение скорости при исполнении.
Но с другой стороны, многие вещи работают с WPF. Я не скажу, что это сложнее, но вам нужно учиться «все» с нуля.
Мой вопрос: стоит ли потратить дополнительное время, когда вам нужно создать новый графический интерфейс, и нет никакого времени для проекта?
- Каков правильный способ создания приложения с одним экземпляром?
- Как получить список коллекции значений из app.config в WPF?
- Редактирование одного клика в WPF DataGrid
- Выполнение задачи в фоновом режиме в приложении WPF
- Преобразование управления WPF (XAML) в документ XPS
- Как связать массив байтов с изображением в WPF с преобразователем значений?
- WPF / MVVM - как обрабатывать двойной щелчок на TreeViewItems в ViewModel?
- Доступ к переменной codebehind в XAML
- Элементы ListBox возвращают строку, когда DataTemplate является Button
- Быстрая и надежная наблюдаемая коллекция
- CommandParameters в ContextMenu в WPF
- Как перезапустить приложение WPF?
- Мои изображения размыты! Почему WPF SnapsToDevicePixels не работает?
WPF позволяет вам делать некоторые потрясающие вещи, и я ЛЮБЛЮ его … но я всегда чувствую себя обязанным квалифицировать свои рекомендации, когда разработчики спрашивают меня, думаю, что они должны перейти к новой технологии.
Желают ли ваши разработчики (желательно, EAGER) потратить время, необходимое для того, чтобы научиться эффективно использовать WPF? Я никогда бы не подумал сказать это о MFC, Windows Forms или даже неуправляемом DirectX, но вы, вероятно, НЕ хотите, чтобы команда пыталась «забрать» WPF в ходе обычного dev. цикл для доставки продукта!
Сделайте, по крайней мере, один или два из ваших разработчиков, обладающих определенными возможностями дизайна, и у людей с окончательным авторитетом дизайна есть хорошее понимание проблем разработки, поэтому вы можете использовать возможности WPF для создания чего-то, что на самом деле ЛУЧШЕ, а не просто более «красочных», , показывая безвозмездную анимацию?
Находит ли определенный процент вашей целевой клиентской базы встроенные графические чипсеты, которые могут не поддерживать функции, которые вы планировали, или они все еще работают под управлением Windows 2000, что полностью устранит их как клиентов? Некоторые люди также спрашивают, действительно ли ваши клиенты заботятся об улучшенных визуальных эффектах, но, пережив внутреннюю дискуссию «Наши бизнес-клиенты не заботятся о цветах и фотографиях» в начале 90-х годов, я знаю, что хорошо разработанные решения от ваших конкурентов СОЗДАВАЮТ им заботу, и реальный вопрос в том, являются ли условия правильными, чтобы вы могли предложить что-то, что заставит их заботиться ТЕПЕРЬ.
Влияет ли проект на разработку сайта, по крайней мере, на уровень презентации, чтобы избежать дополнительной сложности попыток подключиться к несовместимым старым лесам (Interop with Win Forms НЕ ПРОСТО)?
Может ли ваш менеджер принять (или отвлечься от заметок) значительную DROP в производительности разработчиков в течение четырех-шести месяцев?
Этот последний вопрос объясняется тем, что мне нравится думать о природе WPF «FizzBin», с десятью различными способами реализации любой задачи и без видимых причин предпочесть один подход к другому, а также небольшое руководство, которое поможет вам сделать выбор. Мало того, что недостатки любого выбора, который вы сделаете, станут понятнее только позже в проекте, но вы практически гарантированно, что каждый разработчик вашего проекта примет другой подход, что приведет к серьезной головной боли обслуживания. Большинство расстраивает все несоответствия, которые постоянно вас трогают, когда вы пытаетесь изучить структуру.
Вы можете найти более подробную информацию, связанную с WPF, в записи в моем блоге:
Спустя три месяца, пытаясь выработать приложение бизнес-classа (LOB) в WPF, я решил рассмотреть возможность возврата к Windows Forms для моего проекта и исследования чужих мнений, наткнулся на эту тему …
Да, WPF – это блестящая технология, и у нее есть преимущества, которые выходят далеко за frameworks простой глазной конфеты … шаблоны и возможности связывания – отличные примеры. Вся объектная модель предлагает большую гибкость и более широкие возможности. Однако это не делает платформу defacto для будущих приложений больших объектов.
«Проблемы», которые WPF решает с точки зрения разделения GUI от бизнес-логики, не являются проблемами, которые не могут быть легко решены в Windows Forms, просто начиная с правильной архитектуры и разумом. Даже возможности привязки объекта-пути WPF могут быть воспроизведены в Windows Forms с помощью очень простых вспомогательных classов. Возможности шаблона данных WPF очень приятны, но опять же они ничего, что вы не можете имитировать в Windows Forms в тех редких случаях, когда вы абсолютно точно не знаете, какие объекты вы собираетесь представлять в любой части экран.
В случае, когда Windows Forms продвигается вперед, в терминах зрелости. Вы не можете качать мертвую кошку в Google, не попав в какой-то блог, где кто-то решил проблему Windows Forms для вас. WPF, с другой стороны, имеет сравнительно меньше доступных ресурсов обучения, меньше доступных пользовательских элементов управления, и не было решено столько проблем, связанных с прорезями.
На пике принятия решения WPF и Windows Forms должна быть зрелость среды разработки. Редакторы Windows Forms являются гладкими, отзывчивыми и интуитивно понятными. Обратная связь об ошибках сразу приходит к вам, решения обычно очевидны, а цикл редактирования компиляции-> debug-> в Windows Forms очень быстрый.
С другой стороны, приложения WPF имеют относительно жалкую поддержку времени разработки, при этом дизайн-просмотр все слишком готов к выкуриванию при первой встрече с ошибкой, часто требующей сборки проекта после исправления до того, как дизайнер захочет еще раз. Drag’n’drop компонентов из инструментария также может не поддерживаться, учитывая широкий диапазон обстоятельств, при которых он либо вообще не работает, либо дает совершенно неинтуитивные результаты. Несмотря на promise WpfToolkit, до сих пор нет пригодного для использования DataGrid для WPF, который бы обеспечивал любую удобную производительность или время разработки.
Отладка WPF-приложений немного похожа на старую парадигму отладки ASP.NET … hit F5 -> wait -> launch -> error -> stop -> fix -> hit F5 -> wait -> launch -> error -> groan -> stop -> fix -> hit F5 …. Все XAML, в которых работает ваша программа, заблокированы, а отслеживание конкретных задач XAML часто утомительно.
Суть в том, что средства разработки для Windows Forms собираются выбить на передний план за долю времени приложения WPF … особенно если вы создаете сетки главной таблицы или электронную таблицу как у большинства LOB. В Windows Forms вы начинаете с 90% работы, уже сделанной для вас.
Я большой поклонник архитектуры WPF. Я просто хочу, чтобы набор инструментов времени разработки не был похож на pre-alpha debug-build.
Изменить: этот ответ был опубликован о .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 не требует, чтобы ваши конечные пользователи имели современные настольные компьютеры с достойным графическим оборудованием.
Мне семь месяцев приходится использовать 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 вопросом фактически инвестиционным решением?»
(Кажется, это стало моей любимой нитью.)
Есть ли веские причины использовать WPF
Абсолютно! WPF абсолютно невероятен! Это будет важным преимуществом для практически любого проекта, потому что у него так много возможностей и возможностей, которых нет в Windows Forms.
Для бизнес-приложений наибольшие выигрыши будут:
- Наибольшую разницу имеют фантастические привязки данных и шаблоны. После того, как будет создана достойная модель данных, для создания шаблона данных потребуется всего несколько кликов, а с помощью Expression Blend можно точно настроить, как будет выглядеть ваш объект, используя drag-and-drop. И привязка к вещам, как цвет или форма, тривиальна.
- Раскладка экрана невероятно гибкая. Мало того, что все в WPF плавно настраивается на размеры и размеры контейнера, но элементы можно тривиально увеличивать и поворачивать и даже выходить за пределы их frameworks.
- Обычные объекты могут быть представлены любым удобным вам способом, могут легко иметь разные презентации на разных экранах, делиться презентацией и адаптировать свою презентацию к изменениям в значениях данных.
- Если вам нужно распечатать, рендеринг на принтере тривиален. Правильно настроенный WPF делает Crystal Reports или SQL Server Reporting Services (SSRS) похожим на игрушку ребенка.
- Ваш пользовательский интерфейс будет выглядеть и чувствовать себя намного более динамично, включая приятные функции, такие как кнопки, которые оживляют, когда вы пропустите мышь над ними.
Для утилит и игр на передний план выходят другие преимущества:
- Вы можете легко добавлять фигуры, линии и произвольные чертежи в приложение без использования внешнего редактора. Каждый компонент из них может быть привязан к данным и анимироваться или управляться кодом. В Windows Forms вам просто нужно импортировать bitmap и использовать его как есть, если вы не хотите много работать.
- Анимация classная! Пользователи будут действительно впечатлены, если вы не переусердствовали. Они также могут помочь людям понять, что происходит, и уменьшить потребность в галактике. Например, при перетаскивании объекта вы можете анимировать цель, чтобы показать, что произойдет, если вы ее уроните.
- Цвета, gradleиентные заливки, кисти, причудливые шрифты, rotation любых объектов, плиточные кисти и т. Д. Все, что вы хотите графически, принадлежит вам для запроса.
- Невероятно настраиваемый. Мне нужно было нарисовать железнодорожные пути для одного приложения, поэтому я мог бы спустить на них поезд. Через пару часов у меня были железнодорожные пути, которые я мог рисовать в любом месте экрана, используя кривые Безье , и они присоединились бы и переключались бы автоматически.
Суть в том, что любой графический интерфейс значимого размера, который вы могли бы создать в Windows Forms, можно построить в WPF в трети усилий (или меньше) и искать способ, лучше.
Требует ли WPF дополнительных ресурсов (в частности, ОЗУ)
Вы платите цену по сравнению с Windows Forms, но она небольшая.
- ОЗУ может увеличиваться или уменьшаться в зависимости от вашей реализации. WPF сохраняет свои данные более эффективно, поэтому отдельные объекты меньше, но в WPF больше объектов в WPF, чем в Windows Forms, поэтому это балансирует, и каждый может выйти вперед.
- CPU будет расти по сравнению с Windows Forms. По моему опыту, фактическое обновление объектов WPF на экране занимает примерно вдвое больше, чем обычный рендеринг Windows Forms. Если ваше приложение тратит большую часть времени на обновление экрана, WPF может быть не для вас. Но в этом случае вы, вероятно, тоже не используете Windows Forms: большинство серьезных игр написаны непосредственно в DirectX .
- Использование WPF будет немного меньше для WPF, потому что он требует гораздо меньше кода, чем Windows Forms. Разумеется, данные будут одного размера.
Еще одна заметка о работе с ЦП: анимации и преобразования (движение, перевод и т. Д.) На самом деле более эффективны в WPF, чем в Windows Forms из-за хранения в сохраненном режиме. Это первоначальное получение объектов там, где медленнее.
Накладные расходы на обслуживание
WPF – это огромная победа над Windows Forms, когда дело касается обслуживания. Так как все сделано в 1/5 кода, как и раньше, для поддержания требуется 1/5. Кроме того, все материалы шаблонов исчезли, поэтому вы можете сосредоточиться на коде, который фактически выполняет эту работу.
Преимущества XAML
XAML является kernelм WPF. Хотя WPF можно использовать без XAML, XAML делает его невероятно простым в использовании. XAML обладает способностью HTML легко определять пользовательский интерфейс, но его встроенные tags гораздо более мощные, и вы можете легко определить свои собственные. (На самом деле это нормально).
Некоторые конкретные преимущества XAML:
- Весь пользовательский интерфейс определяется в текстовом файле, который легко читается и управляется, как для пользователей, так и для инструментов
- MarkupExtensions позволяют указывать Bindings четким и простым способом
- Преобразователи типов позволяют легко задавать свойства со сложными типами. Например, вы можете сказать Brush = «Зеленый», или вы можете указать радиальную gradleиентную кисть с тремя остановками.
- Вы можете создавать свои собственные элементы
- Вы можете легко использовать мощные «прикрепленные свойства» 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, как говорили другие, include:
- Возможность сделать очень богатые пользовательские интерфейсы относительно легко.
- Легкая анимация и спецэффекты
- Непосредственная масштабируемость (используйте инструмент лупы 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.
Мое первое приложение LOB с WPF оказалось в качестве полного сбоя, потому что это был ресурс hog, который привел к тому, что ноутбуки с очень низким уровнем обслуживания моего конечного пользователя прекратились … и это было в конечном счете потому, что я просто перешел на WPF + LINQ to SQL и ожидаемый хороший результат … и вот где WPF настолько сильно расходится с Windows Forms … В Windows Forms вы можете уйти от такого рода вещей. WPF намного тяжелее ресурсов, чем Windows Forms, и если вы не создаете приложение, чтобы быть скудным, вы получаете 800-фунтовый горилл.
Не уклоняйтесь от WPF … исследуйте это. Но имейте в виду, что допустимые грехи кодирования Windows Forms не приведут к хорошим результатам в WPF. Это принципиально разные двигатели, которые поддаются принципиально различным схемам кодирования.
Последнее слово: если вы продолжите работу с WPF, хорошо разбирайтесь в виртуализации данных для использования со списками и gridми. Что представляет собой простой привязанный к данным ListItem или GridCell, он становится массивным логическим + визуальным графическим объектом в WPF, и если вы не научитесь виртуализовать, приложение не будет хорошо работать на больших наборах данных.
В WPF очень крутая кривая обучения, и я рекомендую сначала получить очевидные книги ( Adam Nathan , Sells / Griffiths , Chris Anderson ) и блоги ( Josh Smith и т. Д.). Просто будьте готовы к этому и убедитесь, что ваш проект позволяет вам изучить WPF.
В дополнение к изучению технологии, потратьте некоторое время на изучение шаблонов, используемых для создания приложений WPF. Модель View ViewModel (MVVM), похоже, заслуживает большого признания.
Лично я считаю, что WPF стоит того, но его предупреждают. Также обратите внимание, что вы фактически ограничиваете своих пользователей Windows XP SP2 + и Windows Vista. Мы приняли это решение, но у вас могут быть разные требования.
Обе технологии имеют свои плюсы и минусы. В большом приложении с «classическим» интерфейсом я бы использовал Windows Forms. В приложении, которое требует богатый пользовательский интерфейс (скинирование, анимация, изменение пользовательского интерфейса), я бы выбрал WPF. Пожалуйста, проверьте статью WPF и Windows Forms, сравнивая WPF и Windows Forms.
Помимо гибкости дизайна пользовательского интерфейса, в WPF есть некоторые технические преимущества:
1.) WPF не полагается на объекты GDI. Ну, я думаю, что он использует 2 объекта GDI для экземпляра самого windows, но это практически ничего. В определенной степени я участвовал в очень большом внутреннем приложении 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
Я думаю, что стоит изучить WPF. Как только вы достигнете скорости, дизайн работы над вашими формами намного проще ИМХО. Я бы не стал беспокоиться о «сексуальных» вещах. Большая часть этого всего лишь причуда. В WPF можно быстро и легко создавать «обычные» приложения в стиле Winforms.
Вся концепция позволяет упростить дизайн IMO.
Я не согласен с некоторыми из ответов здесь. WPF действительно хорошо подходит для бизнес-приложений (LOB). (Лучшим примером является LOB-дизайн лягушки). Кроме того, у всех возможностей, чтобы ваш пользовательский интерфейс был глазной конфеткой (что не обязательно в бизнес-приложениях), WPF предлагает вам гораздо больше.
Функции привязки данных и шаблонов просто превосходят Windows Forms. Он также предлагает гораздо лучший способ разделения кода и презентации. Мы успешно использовали WPF для 2 приложений LOB в командах с не более чем 2-3 разработчиками.
Самая большая проблема, с которой вы столкнетесь, – это, вероятно, крутая кривая обучения WPF (по сравнению с Windows Forms), которая снизит скорость разработки с разработчиками, не используемыми для WPF.
В настоящее время мы переписываем наше приложение в WPF из Windows Forms. Да, есть крутая кривая обучения, и вам нужно «переучивать» некоторые вещи, но это того стоит. В сочетании с WCF мы находим, что мы пишем меньше кода, быстрее и надежнее, чем когда-либо прежде.
Придерживайтесь этого, читайте книгу Адама Натана и проверяйте постоянно растущую библиотеку сторонних элементов управления, таких как Telerik и ComponentOne . На мой взгляд, одним из негативных моментов является то, что инструмент проектирования, Expression Blend , очень неудобен в использовании. Последняя версия по-прежнему находится в стадии бета-тестирования, но она просто не подходит для тех из нас, кто уже много лет использует 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. (Приложения Altough Silverlight).
Если у вас есть время и ресурсы для инвестиций в обучение WPF, сделайте это! Даже если вы собираетесь писать приложения Silverlight для поддержки нескольких ОС.
Если вам нужны настольные приложения для работы на нескольких ОС с SWF.
Есть много различий. Мы любили WPF для:
- Декларативный стиль программирования.
- Анимации и переходы состояний
- Expression Blend – отличный инструмент
- Хорошая поддержка стиля.
Однако мы придерживались Windows Forms, потому что:
- Дополнительное время, которое требуется разработчику для изучения WPF, когда они уже знают Windows Forms.
- 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 – ваш ответ. Если classические кнопки в стиле Windows в порядке, то Windows Forms – это, вероятно, путь.
(Несколько ответов утверждают, что вы должны использовать WPF, если дизайн интерфейса «важен для вас», но это довольно сложно. Дизайн интерфейса всегда «важен».)
Если у вас есть лицензия MSDN, ознакомьтесь с инструментами Expression . Он явно разработан для WPF, напрямую экспортируется в Visual Studio, и это может облегчить переход.
Если вы только заботитесь о поддержке Windows и не против времени, которое требуется для ее изучения, перейдите в WPF. Это быстрый, гибкий, простой в использовании и отличный инструмент для работы с ним.
В качестве бонусного бонуса Silverlight основан на WPF, и, начиная с того, вы также можете узнать, как работать с другим. Если что-то по-прежнему выходит на веб-сайт, наличие предварительных знаний (и библиотеки существующего кода) для простой передачи в браузер (или Windows Live Mesh) может помочь предоставить вашему программному обеспечению дополнительную жизнь.
Если вы решите пойти с WPF, учитывая плюсы и минусы, уже объясненные в приведенных выше ответах, я настоятельно рекомендую пройти этот эпизод dnrTV с Билли Холлисом
В эпизоде 315 DotNetRocks Брайан Нойс обсуждает это подробно.
Существует известная проблема с текстовым рендерингом в WPF. Многие пользователи сообщают, что использование антиалиасинга и смешивания пикселей приводит к размытому тексту. В некоторых случаях это серьезный брелок, и, насколько мне известно, Microsoft на каком-то уровне признала.
За последние 3 1/2 года я занимаюсь разработкой Windows Forms (в двух компаниях). Оба приложения широко использовались и в результате имели проблемы с GDI. Большие приложения Windows Forms в конечном итоге исчерпывают ресурсы GDI – заставляют конечного пользователя перезагружаться.
Скотт жалуется на Expression Blend и как он не имеет смысла для него как разработчика. Моя первая реакция на Expression Blend была такой. Однако теперь я рассматриваю его как неоценимый инструмент, но это действительно зависит от того, какой тип разработчика вы являетесь.
Я разработчик пользовательского интерфейса, которому пришлось выполнить роль Integrator , и в итоге я нашел выражение Expression Blend неоценимым для создания стилей и управления шаблонами в стиле WYSIWYG. У меня почти всегда есть Expression Blend и Visual Studio, работая одновременно над одним и тем же проектом.
Я также думаю, что играть в Expression Blend и взглянуть на XAML, который выплевывает, – отличный способ изучить API WPF … очень похоже на использование дизайнера в Windows Forms и проверку кода C #, который он выплевывает, полезно в обучении тому, как использовать то, что вы там проектируете.
Экспрессия Blend полезна. Просто попробуйте, особенно если вы работаете над визуальными приложениями для приложения.
Цитата из более ранней публикации от Марка :
- В Windows Forms вы создаете свой пользовательский интерфейс, а затем записываете код для управления этим пользовательским интерфейсом, который обычно также включает в себя код для управления вашими объектами данных.
- В WPF вы инвестируете в бизнес-уровень, который управляет вашими объектами данных, а затем проектирует интерфейс, который прослушивает ваши объекты данных.
Я бы сказал, что это скорее выбор дизайна, а не то, используете ли вы Windows Forms или WPF. Однако я могу понять, что некоторые технологии могут лучше подходить для конкретного подхода.
Только если у вас нет опыта WPF, и вы не хотите инвестировать в него 🙂