This article has been localized into Russian by the community.
WPF vs. WinForms
В предыдущем разделе мы определили, что такое WPF и начали обсуждение более старого фреймворка - WinForms. В этом разделе я постараюсь сравнить данные модели, так как, несмотря на одинаковое предназначение, между ними существует множество различий. Если Вы никогда не работали до этого с WinForms и, особенно, если WPF это Ваш первый в изучении GUI фреймворк - можете пропустить текущий раздел, но если все же интересно, прочитайте ниже про различия между WPF и WinForms.
Одним из самых важных различий между WinForms и WPF является тот факт, что в WinForms интерфейс пользователя это всего лишь графический слой, использующий стандартные элементы управления Windows (например TextBox), а WPF-интерфейс, в свою очередь, построен "с чистого листа", не опираясь в большинстве случаев на стандартные элементы. Это может показаться весьма тонкой гранью между рассматриваемыми моделями, но в действительности это не так, и Вы обязательно обратите на это внимание при работе с фреймворком, базирующимся на Win32/WinAPI.
В качестве примера вышеописанной ситуации можно рассмотреть кнопку с изображением и текстом на ней. Этот элемент управления не является стандартом Windows, и, в таком случае, WinForms не предоставляет готового решения. В результате Вы будете вынуждены создать изображение и заимплементировать собственную кнопку, поддерживающую изображения либо воспользоваться готовыми нестандартными решениями. Кнопка в WPF, в свою очередь, может иметь внутри что угодно, так как это просто "рамка", содержащая графический контент, находящаяся в разных состояниях (например: нажатая, ненажатая, реагирующая на наведенный курсор). Ее можно трактовать как "невидимую" (это относится к большинству других элементов управления WPF), это значит, что она может содержать в себе ряд других элементов внутри. Вы хотите получить кнопку с изображением и текстом? Просто поместите элементы Image и TextBlock внутрь кнопки и она готова! В рамках элементов управления WinForms Вы просто не ощутите той гибкости при разработке, что является причиной процветания рынка, который предлагает готовые простые реализации таких элементов как "кнопка с изображением" и подобных.
Слабой стороной гибкости, о которой шла речь является то, что Вам придется больше работать для достижения результата, который просто можно было бы достичь в WinForms, так как она была создана для определенных сценариев. Как минимум, это будет ощутимо в начале, когда Вы захотите например создать шаблон ListView с изображением и хорошо выровненным текстом, тогда как ListView в WinForms это всего лишь одна строка кода.
Выше было представлено лишь одно из различий, но когда Вы начнете работать с WPF, то поймете, что оно является причиной большого количества других - просто WPF устроен по своему, хорошо это или плохо - решать Вам. Больше никаких ограничений элементами управления платформы Windows, но для того, что достичь гибкости, о которой шла речь - придется приложить больше усилий, по сравнению с созданием стандартных Windows интерфейсой пользователя.
Ниже приведено полностью субъективное мнение на тему ключевых преимуществ WPF и WinForms. Это может помочь вам понять, какую из технологий стоит использовать.
Преимущества WPF
- Она более новая и, соответственно, отвечает современным стандартам разработки
- Microsoft использует ее во многих своих приложениях, например Visual Studio
- Это более гибкая система, Вы можете сделать больше, без написания или покупки готовых элементов управления
- Если вдруг Вы решите воспользоваться готовыми решениями из сообщества, скорее всего сторонние разработчики будут сфокусированы именно на WPF, поскольку это более новая система
- С помощью XAML можно легко создавать и редактировать GUI, позволяя разделить работу дизайнера (XAML) и программиста (C#, VB.NET и др.)
- Привязка данных позволяет Вам еще лучше разделить данные и GUI
- Для лучшей производительности можно использовать аппаратное ускорение при отрисовке GUI
- Позволяет создавать GUI как для Windows приложений, так и для приложений Web (Silverlight/XBAP)
Преимущества WinForms
- Технология более старая и, соответственно, лучше испытанная и протестированная
- На данный момент существует огромное множество готовых элементов управления, которые можно купить либо использовать бесплатно
- С точки зрения написания, дизайнер Visual Studio лучше приспособлен к WinForms, так как в WPF больше необходимо делать самому
- Afar
- Afrikaans
- Albanian
- Arabic
- Bulgarian
- Catalan
- Chinese
- Croatian
- Czech
- Danish
- Dutch
- Finnish
- French
- German
- Gujarati
- Hebrew
- Hindi
- Hungarian
- Indonesian
- Italian
- Japanese
- Kannada
- Korean
- Lithuanian
- Macedonian
- Norwegian Bokmål
- Persian
- Polish
- Portuguese
- Romanian
- Russian
- Serbian
- Slovak
- Slovenian
- Spanish
- Swedish
- Tamil
- Thai
- Turkish
- Ukrainian
- Uzbek
- Vietnamese