Что такое WPF и чем он отличается от WinForms?

Я смотрел WPF, но никогда не работал с ним (за исключением 15 минут, когда возник этот вопрос). Я просмотрел этот пост, но на самом деле он о "Flash" WPF. Итак, в чем разница между приложением Windows Forms и приложением WPF?

Ответов (7)

Решение

WPF - это слой представления пользовательского интерфейса на основе векторной графики, в отличие от WinForms. Почему это важно / интересно? Будучи векторным, он позволяет слою представления плавно масштабировать элементы пользовательского интерфейса до любого размера без искажений.

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

WPF также полностью поддерживает привязку данных, что означает, что вы можете привязать любое свойство элемента пользовательского интерфейса к объекту .NET (или свойству / методу объекта), свойству другого элемента пользовательского интерфейса или данным. Да, WinForms поддерживает привязку данных, но гораздо более ограниченным образом.

Наконец, WPF имеет «скин» или «тему», что означает, что как разработчик вы можете использовать поле со списком, потому что это именно то поведение, которое вам нужно, но кто-то может «скинуть» его, чтобы он выглядел как-то совершенно по-другому.

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

  1. WPF - это, по сути, новый API для создания графических пользовательских интерфейсов для платформы Windows.
  2. WPF - это больше, чем просто система презентаций нового поколения для создания клиентского приложения Windows вместе с визуально потрясающими пользовательскими интерфейсами.
  3. WPF построен на основе DirectX (Direct3D), вместо того, чтобы полагаться на более старую подсистему GDI / GDI +.
  4. WPF - это слой представления пользовательского интерфейса на основе векторной графики, который, будучи векторным, позволяет слою представления плавно масштабировать элементы пользовательского интерфейса до любого размера без искажений.
  5. WPF поддерживает "скин" и "тему". Это означает, что WPF позволяет изменять внешний вид любого элемента управления пользовательского интерфейса.

Чтобы ответить на ваш вопрос, приложение WPF - это приложение Windows. WPF - это новый фреймворк Microsoft (фактически, это подсистема .NET framework 3.0) для написания многофункциональных приложений Windows. Он задуман как возможная замена WinForms (хотя, по общему признанию, скорость принятия намного ниже, чем рассчитывала MS).

Хороший способ взглянуть на это может начать с вопроса, что же такое Winforms.

И Winforms, и WPF - это фреймворки, призванные упростить кодирование уровня пользовательского интерфейса приложения. По-настоящему старые люди здесь, возможно, смогут рассказать о том, как написание версии для Windows «Hello, World» могло занять около 4 страниц кода. Кроме того, тогда камни были намного мягче, и нам приходилось сражаться с гигантскими ящерицами, пока мы кодировали. Библиотека и конструктор Winforms берет на себя множество общих задач и упрощает их написание.

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

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

Хорошее приложение WPF следует той же модели, что и хорошее приложение Winforms; держать как можно больше вещей за пределами уровня пользовательского интерфейса. Основная логика приложения и уровень данных должны быть одинаковыми, но теперь есть более простые способы сделать визуальные эффекты более впечатляющими, и, вероятно, поэтому большая часть информации, которую вы видели на нем, включает в себя более яркие визуальные элементы. Если вы хотите изучить WPF, вы можете начать с его использования почти так же, как Winforms, а затем реорганизовать другие функции по мере их понимания. В качестве отличного примера я настоятельно рекомендую серию сообщений в блоге Скотта Хансельмана о разработке BabySmash, которые начинаются здесь . Это отличное пошаговое руководство как в коде, так и в мыслях.

Начните здесь, есть десятки и десятки видеороликов: http://www.windowsclient.net/learn

В этом случае маркетинговая схема довольно хороша:

** "Windows Forms - это набор классов в .NET Framework, который обеспечивает быструю разработку полнофункциональных клиентских приложений Windows с мощными расширяемыми библиотеками для элементов управления и графики пользовательского интерфейса. Вы можете включить WPF в свои приложения Windows Forms через WPF- Совместимость Windows Forms с .NET 3.5 Framework. "*

* "WPF, компонент Microsoft .NET Framework 3.5, дает вам возможность создавать новое поколение пользовательских интерфейсов Windows. WPF поддерживает пользовательский интерфейс, мультимедиа, документы, аппаратное ускорение, векторную графику, масштабируемость до различных форм-факторов, интерактивную визуализацию данных, и превосходная читаемость контента. "**

С WPF вы получаете НАМНОГО лучшую поддержку графики, более мощную и гибкую привязку данных (если вы работаете с данными, используйте WPF.)

WPF означает W INDOWS P resentation F oundation. Хотя технология WinForms зависит от GDI / GDI +, WPF построен непосредственно поверх DirectX. Это означает, что вы можете сделать гораздо больше, чем с помощью WinForms, продолжая при этом использовать библиотеку классов .NET Framework. Вы можете создавать многофункциональные пользовательские интерфейсы, 2D / 3D-игры, презентации и многое другое. WPF очень похож на Flash (swf) фильм, без элемента «Movie». WPF основан на .NET и может использоваться для создания полнофункциональных клиентских веб-приложений.

С точки зрения реализации, одно из основных отличий заключается в том, что WPF использует строго принудительную архитектуру MV-VM модель-представление-модель представления, при этом представление определяется на настраиваемом языке разметки, XAML, модель представления является классом с доступными свойствами, и модель фактически является слоем доступа к данным. WinForms, для сравнения, не имеет такого явного разделения - хотя по соглашению различные аспекты могут быть сгруппированы в разных файлах C#, все это остается кодом. На практике это делает разработку WPF более похожей на разработку веб-модели DOM, при этом фреймворк WPF работает в фоновом режиме и является посредником.