Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/88: Рейтинг темы: голосов - 88, средняя оценка - 4.85
-3 / 0 / 6
Регистрация: 21.06.2015
Сообщений: 152

Используют ли сейчас Windows Forms или все перешли на WPF?

11.02.2017, 15:27. Показов 17852. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Используют ли сейчас windows forms или все перешли на wpf? Насколько я знаю то винформы очень устарели. Мне интерестно используется эта технология в современных проектах.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2017, 15:27
Ответы с готовыми решениями:

Windows Forms или WPF?
Добрый день! У меня есть необходимость написать некую корпоративную CRM систему для нужд компании. Вот думаю, какую технологию...

WPF или Windows Forms. Сложность
Что лучше и проще в реализации? WPF или Windows Forms? Хотя даже не то, чтобы проще или лучше, что более удобное? Сам студент, который...

Что лучше Windows Forms или WPF?
Доброго времени суток! подскажите те кто имеет опыт чем отличается приложение WPF от Windows Forms и в каких случиях что лучше использовать...

33
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10428 / 5158 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
13.02.2017, 11:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Wolfdp Посмотреть сообщение
Т.е. в WPF биндинг на UI части по сути вынесен в само представление, без дополнительных ивентов в самой модели. В формах нам нужно вручную сообщать внутри моделей об изменениях.
Я не очень понял, что вы хотите показать своим примером. И почему вы код модели вынесли в WinForm? Модель у них одинаковая. А то может сложится впечатление, что код в WPF в десять раз короче, но это же не так.
На самом деле все отличие только в строках:
winforms:
C#
1
2
label1.DataBindings.Add("Text", model, "TestField");
textBox1.DataBindings.Add("Text", model, "TestField");
wpf:
XML
1
2
<TextBox x:Name="textBox" Text="{Binding Path=TestField}" />
<Label x:Name="label" Content="{Binding Path=TestField }" />
C#
1
grid1.DataContext = model;
1) Как по мне код в винформе выглядит проще. Он короче и собран в одном месте. В отличие от ugly xaml, в котором глаза можно сломать, и в которой нужно постоянно переключаться. (да, конечно в формах есть еще скрытый метод InitializeComponent, но я его не вижу и никогда туда не лезу, в отличие от xaml в который нужно лазить постоянно).
2) Но никто не мешает вам сделать такой биндинг, как вам нужно, в винформах. Вы почему то зациклены на стандартном биндинге. Но я например стараюсь его не использовать, а использую виртуальный режим. А если его в контроле нет, то делаю такой контрол сам. При желании, можно и xaml на винформах прикрутить, это же не есть принципиальная проблема.
3) То преимущество, что в WPF оформление отсоединено от кода - мнимое. Никакой дизайнер не будет прописывать биндинги в xaml. Дизайнер то и xaml вообще не будет использовать. Он в лучшем случае в фотошопе накидает дизайн. А xaml и бандинги - все равно придется выставлять программисту. Может где-то есть продвинутые дизайнеры, который умеют xaml, но я таких еще не встречал.
4) И еще, винформа не навязывает вам идеологию. Там ее просто нет. WPF же навязывает MVVM. Это сокращает варианты маневра по выбору паттернов.

Тем не менее я никого не агитирую за винформы. Я не думаю что новичкам обязательно нужно изучать винформы. Вопрос просто был о том, используют ли винформы. Ответ - да, используют. Категоричные заявления о том, что "все новые проекты на WPF" - мягко говоря не соответствуют действительности.
На самом деле новички будут писать не на том, на чем им хочется, а на том, на чем скажут
И если им скажут писать на винформах, а новичок знает только WPF, то упс. Профи должен знать и то и другое.
3
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
14.02.2017, 06:31
Цитата Сообщение от Storm23 Посмотреть сообщение
Я не очень понял, что вы хотите показать своим примером.
Тем что сильно мало работал на десктопе. =D Собственно, я и написал вроде
Цитата Сообщение от Wolfdp Посмотреть сообщение
Хорошо, поправте если не прав:
INotifyPropertyChanged явно лишний в первом примере, формы, как я уже понял, могут и с голой моделью исключительно по полям работать.

Цитата Сообщение от Storm23 Посмотреть сообщение
Как по мне код в винформе выглядит проще.
субьективно. Через код можно и на WPF лепить, но правильнее все же через Designer. По идеи представление должно знать к чему нужно обращатся, а не код указывать представению.

Цитата Сообщение от Storm23 Посмотреть сообщение
В отличие от ugly xaml, в котором глаза можно сломать
Опять же, врубаем режим дизайнера, и вообще забываем о xaml. В нем мудрить руками вообще смысла нет. Либо мне в прошлом везло на проекты, где все вопросы решались через манипуляции в режиме дизайна, без спускания в непосредственно xaml.

Цитата Сообщение от Storm23 Посмотреть сообщение
То преимущество, что в WPF оформление отсоединено от кода - мнимое. Никакой дизайнер не будет прописывать биндинги в xaml.
возможно я сильно засиделся на Web, но фишка не в том, что кто-то отдельно может писать UI, а что для него нужно только знать контракт модели, а в код можно и не лезть. Если бы это не давало профита, в WinForms с этим бы не заморачивались.

Цитата Сообщение от Storm23 Посмотреть сообщение
И еще, винформа не навязывает вам идеологию. Там ее просто нет. WPF же навязывает MVVM. Это сокращает варианты маневра по выбору паттернов.
Не пойму, что конкретно мешает использовать другие подходы?


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

p.s. на хабре вроде была статья, что если бы ребята из MS решили проблему синтаксиса xaml, по аналогии внедрения Razor в MVC, то про WinForms уже давно бы забыли.
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
14.02.2017, 08:06
Цитата Сообщение от SharpDeveloper Посмотреть сообщение
WinForms безнадежно устарели. В современных проектах все перешли на WPF.
Да ладно дельфи до сих пор используют...
Цитата Сообщение от Wolfdp Посмотреть сообщение
Через код можно и на WPF лепить, но правильнее все же через Designer
А как например залепить смену биндинга через код на WPF?
Скажем для отображения 10 справочников на одной форме.
Я к сожалению недолго ковырял WPF, потому что особой необходимости не было.
Мое мнение о WPF оно больше для, скажем так, программистов-дизайнеров в то время как WF больше для программистов-кодеров
А изучать лучше и то, и то по мере необходимости.
0
Эксперт .NET
 Аватар для Usaga
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,150
14.02.2017, 08:10
Цитата Сообщение от Aferuga Посмотреть сообщение
А как например залепить смену биндинга через код на WPF?
Просто заменить содержимое свойства или сменить контекст.
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
14.02.2017, 08:28
Цитата Сообщение от Aferuga Посмотреть сообщение
А как например залепить смену биндинга через код на WPF?
C#
1
2
3
4
var binding = new Binding("SelectedValue");
      binding.Source = window1.ListBox;
 
      window2.TextBox.SetBinding(TextBox.TextProperty, binding);
Добавлено через 11 минут
Цитата Сообщение от Aferuga Посмотреть сообщение
Мое мнение о WPF оно больше для, скажем так, программистов-дизайнеров
Ошибочно твоё мнение.

WPF для программистов и дизайнеров отдельно.

Программисты делают функционал и не лезут в дизайн.
Дизайнеры делают дизайн и не лезут в код.

И когда в компании работают специалисты, данная концепция разделения поддерживается.
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
14.02.2017, 08:29
Цитата Сообщение от LeniumSoft Посмотреть сообщение
C#
1
var binding = new Binding("SelectedValue"); binding.Source = window1.ListBox; window2.TextBox.SetBinding(TextBox.TextProperty, binding);
Ага вот только глядя на xaml об этом не догадаешься)
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
14.02.2017, 15:04
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Программисты делают функционал и не лезут в дизайн.
чуть уточню: они лезут только в его реализацию. "Дизайнер" же подразумевает его создание в виде макета.
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
14.02.2017, 15:54
Цитата Сообщение от Wolfdp Посмотреть сообщение
чуть уточню: они лезут только в его реализацию.
Кто лезет в реализацию?

Наши дизайнеры умеют работать с Expression Design и Expression Blend.
Код они не правят, но свободно работаю с редакторами xaml и вешают Binding-и.

Или, по-вашему, дизайнер может только psd нарисовать?
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
14.02.2017, 17:07
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Кто лезет в реализацию?
девелоперы. Как правило разграничивают работу дизайнера, задача которого исключительно создать адекватный и няшный интерфейс, а девелопер уже занимается его непосредственной реализацией, причем без творческих правок.

Цитата Сообщение от LeniumSoft Посмотреть сообщение
Или, по-вашему, дизайнер может только psd нарисовать?
может конечно и совмещать верстку+дизайн. Для web очень даже актуально. Можно вообще взять универального синьора, который будет проектировать дизайн + архитектуру + тесты + деплой, и потом еще и их реализацией.
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
14.02.2017, 17:47
Цитата Сообщение от Wolfdp Посмотреть сообщение
может конечно и совмещать верстку+дизайн. Для web очень даже актуально.
Вот мы и пришли к сути.

WPF приближает десктопную разработку к принципам веба.

Разработка под Web с Angular 2 максимально похожа на WPF.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
14.02.2017, 23:29
taras_student, дотнет-десктоп сейчас не особо жив по большому счету. Из оставшихся в живых б0льшую часть новых проектов делают на WPF - ну просто потому, что сколько-нибудь сложное приложение без MVVM запаришься поддерживать, а для маленьких особой разницы между ними нету, и выбирают, что больше нравится, а за счет моды и хипстерства как правило побеждает как раз WPF.

Лично я за последние 4 года видел всего одно UI-приложение, оно было на винформах, и оно сдохло полгода назад. На него приходится с десяток-два WebForms/MVC/.Net Core/... приложений. Причем вебформы точно так же вымирают, как и их десктопные братья.

Добавлено через 8 минут
Цитата Сообщение от Storm23 Посмотреть сообщение
1) Как по мне код в винформе выглядит проще. Он короче и собран в одном месте. В отличие от ugly xaml, в котором глаза можно сломать, и в которой нужно постоянно переключаться. (да, конечно в формах есть еще скрытый метод InitializeComponent, но я его не вижу и никогда туда не лезу, в отличие от xaml в который нужно лазить постоянно).
Помню те же аргументы от парня с методом на 500 строк, который делал всё. А че, все в одном месте и все видно. Какие-то виртуальные функции, от которых глаза сломать можно - фи, нафиг надо. Про InitializeComponent - все становится весьма печально, когда в интерфейс приходит ООП, и контрол на странице является виртуальным и его нужно по-разному отрисовывать в зависимости от каких-то условий. Сколько я тут сломал грабель - не начитаешь. В итоге пришлось пилить свою инфраструктуру собственной инициализации поверх этой, и все это выглядело крайне убого.
2) Но никто не мешает вам сделать такой биндинг, как вам нужно, в винформах. Вы почему то зациклены на стандартном биндинге. Но я например стараюсь его не использовать, а использую виртуальный режим. А если его в контроле нет, то делаю такой контрол сам. При желании, можно и xaml на винформах прикрутить, это же не есть принципиальная проблема.
Во-первых биндинг с конвертерами в винформах не прикрутить нормально никак. Во-вторых если исходить из концепции "чего не хватает в фреймворке - допилю сам", то все они хороши - т.к. тьюринг-полны и позволяют дописать что угодно.
3) То преимущество, что в WPF оформление отсоединено от кода - мнимое. Никакой дизайнер не будет прописывать биндинги в xaml. Дизайнер то и xaml вообще не будет использовать. Он в лучшем случае в фотошопе накидает дизайн. А xaml и бандинги - все равно придется выставлять программисту. Может где-то есть продвинутые дизайнеры, который умеют xaml, но я таких еще не встречал.
Маркетинговый буллшит от майкрософта десятилетней давности про дизайнеров в WPF. Всё, что тут можно сказать, что WPF не лучше винформ. Ну ок, есть и другие причины не пинать труп.
4) И еще, винформа не навязывает вам идеологию. Там ее просто нет. WPF же навязывает MVVM. Это сокращает варианты маневра по выбору паттернов.
Сокращает варианты между MVVM и ... хммм.. А чет больше ничего нормального и нет. Не, можно всякие MVC/MVP приклеивать, но по сути это все тот же MVVM, только без биндингов, где данные нужно руками туда-сюда просовывать. Зачем, если можно доверить это машине?..

Может показаться, что я прям обожаю WPF и считаю его супер-крутой хренью.. Да ничего подобного, та еще отрыжка от Microsoft Foundation, чего одни только всякие BoolVisibilityConverter стоят, но по сравнению с винформами это просто мега-технология.
2
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
15.02.2017, 05:01
Цитата Сообщение от Psilon Посмотреть сообщение
Всё, что тут можно сказать, что WPF не лучше винформ. Ну ок, есть и другие причины не пинать труп.
Я после выпуска с универа, слышал инфу, что разработчики десктопных технологий хотели внедрить html+css для создания визуальной составляющей. Тогда я подума "ну нафига и сюда пихать веб?!" Сейчас я понимаю, что это была бы бомба -- разделение разметки и стилей в xaml. Текущий подход смахивает на html+style в довеске с скриптом, который не то что внешним файлом нельзя подключить, а вообще должен внутри элемента содержатся.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.02.2017, 12:12
Wolfdp, во-первых UWP-приложения можно писать на HTML+JS. Во-вторых есть NodeJS, это тоже в некоторой степени десктопная разработка (т.к. разрабатываается бэкенд). В-третьих, есть полно всяких chromium-приложений, которые пишутся фактически на HTML+JS.

С другой стороны, ресурсов жрут такие приложения (за исключением, может быть, ноды) в разы больше по сравнению со своими возможностями относительно нативных или даже кроссплатформенных Java/.Net приложений.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
15.02.2017, 19:45
Psilon, я имел в виду использования именно в десктопе на платформе .Net. Не редко клиентское и серверное приложение имеет общие либы, например те же модели, поэтому хотелось бы все лепить на одной технологии.

Цитата Сообщение от Psilon Посмотреть сообщение
UWP-приложения можно писать на HTML+JS.
Хм, по ходу при знакомстве я только xaml заметил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2017, 19:45

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

Как заполнить форму MS Word из WPF или Windows Forms?
как заполнить документ msWord через форму? Документ строится к примеру таким образом: Фамилия (данные из textBox1) Имя (данные из...

Переход к формам от консоли. Что выбрать - Windows forms или WPF?
Осилил пока страниц 300 &quot;Полное руководство С# 4.0&quot;. Хочу уйти от консоли. Посоветуйте - куда идти? Windows forms, WPF или чего еще может...

Проблемы с конструкцией async\await при использовании WPF или Windows Forms
Добрый день! Написал библиотечку, использующую, в том числе конструкции async-await. Всё работает, при компиляции в виде консольного...

Ввод чисел, расчет по формулам и построение графика. Windows Forms или WPF
Подскажите пожалуйста какое руководство/книгу для WindowsForm. Только начинаю изучать и толком не знаю как и что. Немного читал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru