Подтвердить что ты не робот

В чем разница между WPF и WinForms?

Я программирую простые приложения для Windows. Мне не нужна поддержка DB. Почему я должен использовать WPF вместо WinForms?

4b9b3361

Ответ 1

  • Чтобы узнать.
  • Чтобы иметь больше (то есть любой) контроль над внешним видом вашей программы
  • Чтобы упростить привязку данных, триггеры, стили

(я не вижу, какая поддержка DB имеет к этому отношение)

Ответ 2

Один очевидный ответ заключается в том, что WPF предлагает более богатый пользовательский интерфейс, чем WinForms, например, для анимации даже 3D в пользовательском интерфейсе.

С точки зрения развития, это долгий путь для обеспечения разделения пользовательского интерфейса (в XAML) от бизнес-логики (в VB.NET или С#), что всегда хорошо.

Поиск Google для "WPF vs WinForms" вызывает много страниц, которые обсуждают эту проблему. Я не буду повторять все их выводы здесь, но эта страница вызывает некоторые интересные моменты:

  • Связывание данных в WPF превосходит то, что предлагает Windows Forms.
  • Бизнес-логика пользовательского интерфейса и С# может быть четко разделена в WPF
  • Раскадровка
  • Шаблоны данных/управления - намного более чистый способ, чем любой Windows Формы могут предлагать.
  • Стили - круто и просто. Его так легко стилизовать все ваши кнопки в приложение имеет одинаковый внешний вид и чувствовать.
  • Даже если дизайнер VS ломается, его легко кодировать XAML.
  • Виртуализация пользовательского интерфейса - у меня есть сетки со 100-килограммовыми рядами, тикающие движущиеся рынок. Производительность была бы ужасной если это не было для визуализации пользовательского интерфейса которые поступают бесплатно.
  • Поддержка 3D.
  • Ничего научного, но, развитие пользовательского интерфейса в WPF быстрее, возможно, только потому, что WPF приложение выглядит более прохладным в конце итерация, или, может быть, потому, что развитие действительно быстрее.
  • Я могу добавить инженера по работе с пользователями в свою команду и без С# знание, что он может работать в магии в Expression Blend и дать приложение для торговли на фронте a makeover, который гарантированно выиграет над бизнес-пользователями.

Ответ 3

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

Winforms, с другой стороны, предоставляет базовую платформу для разработки "классических" приложений Windows со стандартным внешним видом с использованием стандартных элементов управления. Он не предлагает богатые, аппаратные ускоренные, векторные 2D и 3D возможности, которые предлагает WPF. Приложения Winforms имеют гораздо большую связь между поведением приложений и UI (представлением), что представляет собой менее гибкую платформу для разработки приложений.

Как вы выбираете, он полностью зависит от ваших потребностей. Если вам нужна векторная графика, 3D-рендеринг, возможность создавать богатые, интерактивные, анимированные, современные пользовательские интерфейсы и/или хотите поддерживать разделение проблем, WPF определенно является правильным выбором. Если вам не нужно ничего, и просто нужно создать простой пользовательский интерфейс, который решает простую проблему, winforms наилучшим образом удовлетворит ваши потребности.

Ответ 4

Единственное наиболее важное различие между WinForms и WPF заключается в том, что, хотя WinForms представляет собой просто слой поверх стандартных элементов управления Windows (например, TextBox), WPF построен с нуля и не использует стандартные элементы управления Windows практически во всех ситуациях., Это может показаться небольшим отличием, но на самом деле это не так, что вы обязательно заметите, если когда-нибудь работали с фреймворком, который зависит от Win32/WinAPI.

Отличным примером этого является кнопка с изображением и текстом. Это не стандартный элемент управления Windows, поэтому WinForms не предлагает такую возможность сразу после установки. Вместо этого вам придется нарисовать изображение самостоятельно, реализовать собственную кнопку, поддерживающую изображения, или использовать сторонний элемент управления. В WPF кнопка может содержать что угодно, потому что она по существу является границей с содержимым и различными состояниями (например, нетронутым, наведенным, нажатым). Кнопка WPF "выглядит менее", как и большинство других элементов управления WPF, что означает, что она может содержать ряд других элементов управления внутри нее. Вы хотите кнопку с изображением и текстом? Просто поместите изображение и элемент управления TextBlock внутри кнопки, и все готово! Вы просто не получаете такой гибкости от стандартных элементов управления WinForms, поэтому существует большой рынок для довольно простых реализаций элементов управления, таких как кнопки с изображениями и так далее.

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

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

Ответ 5

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

Кроме того, из-за XAML у вас есть больше возможностей для "делать вещи", декларативных или программных или их сочетания.

Microsoft больше не занимается активной разработкой winforms, они сильно подталкивают WPF и не без оснований.

WPF позволяет значительно упростить "разрешение агностического" проектирования. Чтобы добиться этого в winforms, это больше lot.

Шаблон MVVM уже упоминался в одном из комментариев, это позволяет сделать реальный процесс unittesting vs. GUI-based на вашем коде, который является победой большой, по моему опыту.

Ответ 6

Никто не упомянул о лучших возможностях тестирования приложений WPF (если они написаны корректно, например, на основе шаблона MVVM).

Ответ 7

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

Ответ 8

Преимущества и недостатки WPF перед winforms:

  1. Возможность создавать очень богатые интерфейсы относительно легко.
  2. Более простая анимация и спецэффекты
  3. Собственная масштабируемость
  4. Мощная укладка и структура кожи
  5. Легко создать собственный внешний вид
  6. Поддерживает ли Windows Forms
  7. Будущая технология для разработки приложений Vista
  8. Возможность повторного использования существующего кода
  9. Возможна очень продвинутая привязка данных
  10. Декларативный и процедурный код
  11. Требуется .NET Framework 3.0
  12. По сравнению с Windows Forms, все еще в разработке
  13. Требуется Dx9 совместимая видеокарта для продвинутой графики

Однако у WPF есть недостатки, в которых WinForms стоит на первом месте:

  1. Встроенный пакет управления WPF гораздо более ограничен, чем у WinForms.
  2. Там больше поддержки в стороннем пространстве управления для WinForms. (Это изменилось, но сейчас, благодаря преимуществу времени, WinForms имеет большую поддержку в сообществе.) 3.WPF не будет работать на Windows 2000 или ниже.
  3. Обширная документация, которую можно найти в Интернете для форм WIN
  4. Множество примеров для WIN форм
  5. Разработка собственного внешнего вида в приложении - большая работа. 7.С# работает медленнее. Это несколько заботится при использовании WPF, хотя в настоящее время запуск приложения WPF все еще немного медленный. Однако после запуска программы все анимационные эффекты очень плавные.