Что такое WPF и как он сравнивается с WinForms? - PullRequest
46 голосов
/ 26 февраля 2009

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

Ответы [ 7 ]

61 голосов
/ 26 февраля 2009

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

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

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

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

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

20 голосов
/ 26 февраля 2009

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

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

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

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

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

9 голосов
/ 26 февраля 2009

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

3 голосов
/ 01 октября 2011

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

3 голосов
/ 26 февраля 2009

Начните здесь, есть десятки и десятки видео: 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, позволяет создавать пользовательские интерфейсы нового поколения. WPF поддерживает пользовательский интерфейс, мультимедиа, документы, аппаратное ускорение, векторную графику, масштабируемость до различных форм-факторов, интерактив визуализация данных и превосходная читаемость контента. "**

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...