В чем главное преимущество WPF над WinForms?
WPF программа медленее чем WinForms
Здравствуйте! Такая проблема написал приложение на winforms, которое анализирует точки в окне и.
WPF vs WinForms
Доброго времени суток! Дело обстоит так: Писал программу на WinForms, но из-за тормознуточти.
WinForms + WPF (MDI)
Можно ли в WinForms-окно поместить как MDI Child окно WPF? Можно ли в WPF-окно поместить WinForms.
Но в других случаях, проще взять Winforms, и ресурсы компа приложения будет кушать меньше, а не больше. И работать соответственно быстрее.
Если в одном приложении в разных местах используется и простая и крутая графика, то его рациональнее делать гибридным. Если простая преобладает, то приложение надо делать под Winforms, а в тех местах, где нужна крутая, через ElementHost подключать WPF.
Добавлено через 5 минут
Еще одно преимущество WPF: при каких-то ошибках в коде, генерируемом конструктором GUI (форм/окон), и которые конструктор не может исправить сам, можно исправить вручную в XAMLе, который всегда на виду.
В Winforms такой код все равно есть и ошибки в нем порой бывают, но он спрятан в ***.Designer.cs, что неудобно.
Это только если приложение будет состоять исключительно из UI. Причем WPF использует DirectX, который в свою очередь юзает аппаратное ускорение, а значит в WPF графика будет в разы лучше (без дерганий) и менее натуплять процессор, а задействовать видеоадаптер. Расчет какой-нибудь сложной матрицы или графов будет одинаково не быстро что на WPF, что на Forms.
Само формирование разметки в WPF в разы легче: в тот же ListBox можно засунуть любой другой элемент (по сути перед нами тот же html), на формах с этим вечные пляски.
Ресурсы, стили, шаблоны данных.
P.S. Делать гибриды в приложении вообще не советую. Формы есть смысл использовать только если пишеш на «.NET 2.0», ну или если проект был написан на них рание (не переписывать же рабочее).
> а задействовать видеоадаптер
А если он слабый?
Покупая комп для работы с БД (не фотошопом) в мелкой конторе какой-нить, думают о ЦП и ОЗУ, а не видеоадаптере. Ибо видеоадаптер для работы с БД не нужен. А одного неадекватного товарища, зацикленного на WPF, чьи свистоперделки для работы нафиг не нужны, можно просто послать куда подальше и найти нормального программиста, вместо того чтоб на хороший видеоадаптер тратиться.
> Формы есть смысл использовать только если пишеш на «.NET 2.0»
Ну так-то господин «Оппа Казахстан» написал, что WPF далеко не всегда лучше Winforms.
Создайте проект с 1 пустой формой без рамки в виде ромба на Winforms и такой же проект на WPF. Реализуйте растягивание окна в обоих случаях. И тексбокс на каждом окне разместите, чтобы вместе с окном растягивался. И сравните, что растягиваться быстрее будет и что ОЗУ меньше кушать будет. Сами убедитесь, что простая графика быстрее рисуется GDI, чем GDI+ и DirectX.
Но каждый кулик свое болото хвалит. Ежели бывать на нескольких болотах сразу для него непосильный труд )))
В чем разница между WPF и WinForms?
я программирую простые приложения для Windows. Мне не нужна поддержка DB. Почему я должен использовать WPF вместо WinForms?
8 ответов
(Я не вижу, что поддержка DB имеет к этому отношение)
один очевидный ответ заключается в том, что WPF предлагает более богатый пользовательский интерфейс, чем WinForms, позволяя анимацию даже 3D в пользовательском интерфейсе, например.
с точки зрения разработки это долгий путь для обеспечения разделения пользовательского интерфейса (в XAML) от бизнес-логики (в VB.NET или C#), что всегда хорошо.
поиск Google для «WPF vs WinForms» вызывает много страниц, которые обсуждают эту проблему. Я не буду повторять все их выводы здесь, но на этой странице поднимает несколько интересных моментов:
WPF-это текущая платформа для разработки настольных приложений windows. Это современная, продвинутая, аппаратная ускоренная платформа для разработки приложений, которые поддерживают разделение проблем. Он поддерживает расширенный рендеринг 2D векторной и 3D графики, обеспечивая огромный спектр возможностей для создания богатых, интерактивных и качественных пользовательских интерфейсов.
Winforms, с другой стороны, предоставляет базовую платформу для разработки «классических» приложений windows с помощью стандартный внешний вид с использованием стандартных элементов управления. Он не предлагает богатые, аппаратные ускоренные, векторные 2D и 3D возможности, которые предлагает WPF. Приложения Winforms, как правило, имеют гораздо большую связь между поведением приложений и UI (view), что представляет собой менее гибкую платформу для разработки приложений.
Что касается того, что вы выберете, полностью зависит от ваших потребностей. Если вам нужна векторная графика, 3D визуализация, возможность создавать насыщенные, интерактивные, анимированные, современные пользовательские интерфейсы и / или желание сохранить разделение проблем, WPF, безусловно, правильный выбор. Если вам не нужно ничего из этого,и просто нужно создать простой пользовательский интерфейс, который решает простую проблему, winforms будет соответствовать вашим потребностям.
WPF может использовать аппаратное ускорение в какой-то степени, но это, как ожидается, улучшится с течением времени.
кроме того, из-за XAML у вас есть больше возможностей для «делать вещи», декларативный против программного или смесь обоих.
Microsoft больше не делает активной разработки на winforms, они сильно нажимают WPF, и по уважительной причине.
WPF позволяет гораздо проще» разрешение агностического » проектирования. Чтобы достичь этого в winforms, это много больше работы.
самое важное различие между WinForms и WPF заключается в том, что, хотя WinForms-это просто слой поверх стандартных элементов управления Windows (например, текстовое поле), WPF построен с нуля и не полагается на стандартные элементы управления Windows почти во всех ситуациях. Это может показаться тонкой разницей, но на самом деле это не так, что вы обязательно заметите, если вы когда-либо работали с фреймворком, который зависит от Win32/WinAPI.
отличным примером этого является кнопка с изображением и текстом. Это не стандартный элемент управления Windows, поэтому WinForms не предлагает вам эту возможность из коробки. Вместо этого вам придется нарисовать изображение самостоятельно, реализовать свою собственную кнопку, которая поддерживает изображения или использовать сторонний элемент управления. С WPF кнопка может содержать что угодно, потому что это по существу граница с содержимым и различными состояниями (например, нетронутыми, зависшими, нажатыми). Кнопка WPF «look-less», как и большинство других элементов управления WPF, что означает, что она может содержать ряда других элементов внутри него. Хочешь кнопку с изображением и текстом? Просто поместите изображение и элемент управления TextBlock внутри кнопки, и все готово! Вы просто не получаете такой гибкости от стандартных элементов управления WinForms, поэтому существует большой рынок для довольно простых реализаций элементов управления, таких как кнопки с изображениями и так далее.
недостатком этой гибкости является то, что иногда вам придется работать больше, чтобы достичь чего-то, что было очень легко с WinForms, потому что он был создан только для сценария, который вам нужен. По крайней мере, так кажется в начале, когда вы создаете шаблоны для создания ListView с изображением и некоторым красиво выровненным текстом, что WinForms ListViewItem делает в одной строке кода.
Это было всего лишь одно различие, но когда вы работаете с WPF, вы поймете, что на самом деле это основная причина многих других различий-WPF просто делает все по-своему, к лучшему и к худшему. Вы больше не обязаны делать все так, как Windows, но чтобы получить такую гибкость, вы платите немного больше работы, когда вы действительно просто хотите делать все так, как Windows.
никто не упоминал о лучших возможностях тестирования приложений WPF (если они написаны правильно, например, на основе шаблона MVVM).
WPF или Windows Forms
Я играю с консольными приложениями C# около года, и я хочу перейти к созданию приложений GUI. Я никогда не занимался разработкой GUI, кроме основных приложений Java, но я хочу продолжать использовать C#. Должен ли я начать изучать Windows Forms или перейти прямо к WPF? Есть ли огромная разница? Строится ли WPF поверх Windows Forms или они совершенно разные?
4 ответов
Если вы только начинаете, прыгайте прямо в WPF.
Это позволит вам начать создавать богатые интерфейсы, используя разметку, чтобы определить свой интерфейс, не обучая вас возможным плохим привычкам (для WPF), которые вы узнаете из Windows Forms.
, в по крайней мере, по моему опыту, Windows Forms, похоже, является наиболее часто используемой платформой пользовательского интерфейса рабочего стола в отрасли. Windows Forms нельзя использовать с веб-разработкой, хотя WPF предлагает приложения Silverlight и XBAP.
Если вы делали какие-либо разработки пользовательского интерфейса раньше, я бы осмелился сказать, что Windows Forms легче узнать, поскольку он следует более традиционным парадигмам программирования. Модель программирования WPF сильно отличается от этой. Хотя WPF можно использовать так же, как Windows Forms, большинство его преимуществ не достигается, пока вы не охватите привязку данных и инкапсуляцию, предоставляемые WPF.
несмотря на то, что некоторые моменты в пользу Windows Forms выбор WPF над Windows Forms будет для меня без проблем, если все, что вы хотите сделать, это изучить UI framework. Он превосходит Windows Forms во всех аспектах. Я просто хочу, чтобы индустрия программного обеспечения в целом адаптировала его в большем масштабе! (Хотя никто не пишет настольных приложений, т. к. у нас сеть.)
обе технологии имеют свои плюсы и минусы.
но это немного больше, чтобы создать интерфейс / подключить все события и т. д.
WinForms по-прежнему является мощной технологией, которая часто может быть разработана более быстрыми темпами, чем WPF однако, в конце концов,обе технологии могут быть использованы для достижения той же цели. однако WPF является «новым» стандартом.
приложения WinForms широко используются для разработки бизнес-приложений, в то время как в WPF часто используется для создания более конечных пользователей на основе битов программного обеспечения, приложений и т. д.
WPF предоставляет очень богатые возможности для создания чрезвычайно сложных пользовательских интерфейсов. Это упрощает интеграцию аппаратно-ускоренной графики в интерфейсе. Однако дизайнер Visual Studio WPF действительно плох (я почти никогда не использую его). Я также думаю, что WPF намного сложнее, и с этого сложнее начать. Но это, конечно, субъективно.
Что изучать: WinForms или WPF?
Вот скажите, как это понимать, когда я только начал читать книги, мне писали «Начинайте с консольных приложений». Потом когда я прошёл этот курс, в другой книге уже начали говорить о WinForms, и сейчас я начал читать другую книгу, там автор вообще пишет:
Зачем писать под WinForms, ведь её элементы почти не менялись за последние 10 лет, учите лучше WPF
Я сейчас вообще как ёжик в тумане. Что учить? На чём остановиться? Что ждёт дальше? Может быть, я поучу WPF, а в другой книге уже будут говорить о новом более красочном написании приложений? Можете помочь распутаться и всё расставить по полочкам. пожалуйста.
4 ответа 4
Если Вас интересует программирование desktop-приложений под Windows, то лучше остановиться на WPF, так как:
Хотя, если Вы будете использовать WinForms, приложения будут также отлично работать, так что выбор за Вами.
Насчёт того что ждёт дальше, то до выхода Windows 8 нкаких изменений не планируется. Но как обещают в Microsoft, после её выхода появится возможность разрабатывать интерфейс desktop-приложений используя HTML+CSS+JS.
Если нужны более глобальные сведения по выводу любых изображений, мне кажется, надо изучать DirectX и OpenGL. Если же надо попроще, то тогда WPF. Рад, если помогу определиться.
Лично я (правда, вместе с Microsoft) порекомендую приступать к изучению UWP, Universal Windows Platform. Microsoft усиленно (но, к сожалению, не слишком то эффективно) проталкивает эту технологию, и, судя по всему, будет проталкивать ее еще определенное время, пока в очередной раз не сменится top management.
Опять-таки, программирование для WPF и UWP имеет много общего, так, что освоив UWP, вы без особого труда сможете писать и стандартные Windows приложения, а не только совместимые с Microsoft Store.
Почему все пишут приложения на WinForms если WPF лучше? [закрыт]
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.
Очень часто на этом форуме встречаются вопросы которые начинаются таким образом
Я лично пробовал писать на Win Form и на WPF, и, как мне показалось, WPF более точный, более красивый в плане дизайна UI элементов. К тому же, в комплекте в WPF идёт замечательнейший язык Xaml, с которым работать намного легче чем с C# кодом внутри WinForms.
В связи с этим и задаюсь вопросом: какие преимущества есть у Win Form перед WPF и почему многие пишут на Win Form, хотя у них устарелый дизайн и они не поддерживаются?
4 ответа 4
(Не то, чтобы на WinForms невозможно было писать правильно, это намного сложнее, и требует ручной работы.)
Но следствием этого и обратной стороной является гораздо более высокая сложность WPF как фреймворка, намного более высокий порог вхождения в WPF и в правильные методики программирования на нём. Ведь сила WPF проявляется именно когда вы начинаете отделять контент от представления, без этого он ненамного лучше WinForms.
Тем, у кого есть опыт программирования на MFC или похожих UI-фреймворках, намного легче перейти на практически аналогичный WinForms, чем учить новые (хотя бы и более удобные и продуктивные) концепции, которые помогают лёгкому, удобному программированию на WPF.
Думаю, именно это является основной причиной того, что WinForms всё ещё существует.
и куча всего. Кроме того идеи, принципы и философия, которые положены в основу данной технологии, мне очень импонируют, близки и симпатичны. При этом я не являюсь каким-то ярым противником WinForms или фанатиком WPF, но просто если на секунду вдуматься и поразмыслить чего бы стоило сделать на «формах» то что в WPF реализуется минут за 5 или 10, невольно понимаешь всю мощь и те возможности, которые эта технология предоставляет.
При этом как все мирское, WPF не идеальна и не лишена недостатков, но просто плюсов все-равно больше и это факт.
По поводу устарелого дизайна, я вас не понял.
Лично мои наблюдения:
Контрол DataGrid на WPF крайне сырой(по крайней мере пару лет назад был). Это самый важный контрол для представления данных вообще. Он должен быть очень универсальным, именно такой он в Win Forms, но не в WPF. Для виртуализации данных в DataGrid (WPF) можно использовать только виртуализацию самого источника данных через DataSource.
В Win Forms с DataGridView можно делать буквально все, что только угодно благодаря старому доброму механизму событий(CellVlueNeeded и CellValueFormating), причем очень просто (ну и DataSource тоже на месте).
Кстати, может кто то подскажет, появился способ в DataGrid поставить програмно фокус в строку номер N не прибегая к коду в 30 строк с применением рефлексии?
На мой скромный взгляд WPF хорош для приложений где летающие и пархающие кнопочки в виде звездочек важнее всего остального.
Для бизнес-приложений важно как раз все остальное, эти приложения люди используют долгое время, по многу часов в день. Функционал их сложен и, как правило, нестандартен. Поэтому их интерфейс должен быть максимально функциональным и не оттягивать внимание на самого себя. Человек не должен уставать от пестрого и мультяшного интерфейса.
В пользу WPF скажу только, что сам принцип построения интерфейса в нем очень интересен тем, что похож на таковой в интернет-страницах. Это очень интересно, но пока сыро (до сих пор! Когда был впервые представлен WPF!?). И да, я не обожаю XAML.



