2009-02-26 2 views
40

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

+5

Я нашел это полезным для меня [clear-code.blogspot.com/2012/04/what-is-wpf.html] (http://clear-code.blogspot.com/2012/04/what-is-wpf.html) – 2012-04-23 19:45:33

ответ

54

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

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

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

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

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

+0

Я уверен, что в WinForm вы можете в значительной степени связать любое свойство с чем угодно. Вот почему DataBindings.Add() принимает строку, объект, строку. Поэтому он может использовать отражение для связывания свойств вместе. – Quibblesome

+0

Silverlight использует подмножество возможностей XAML WPF, поэтому знание того, как программировать приложения на основе WPF, делает апплеты Silverlight такими простыми. –

+0

Так может ли пользователь сказать разницу между WPF и WinForm? – Kredns

9

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

17

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

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

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

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

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

+1

Я обнаружил, что пытаюсь сделать что-то способом WinForms, когда я начинал работать в WPF, вызвал у меня много проблем. Вероятно, лучше начинать с чистого листа, насколько это возможно, когда начинаешь работать с WPF, IMO. – Andy

+0

@ Энди Я должен сказать, что подход Скотта действительно заставил меня лучше понять WPF. Я думаю, что это были именно те проблемы, хаки, которые я должен был использовать, чтобы заставить мой код работать в любом случае, а затем возможное «правильное» решение, которое действительно заставило меня учиться. – Raumornie

3

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

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

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

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

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

3

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

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

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

Смежные вопросы