Что такое WPF для программиста WinForms? - PullRequest
10 голосов
/ 27 апреля 2009

Что такое WPF для программиста WinForms?

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

С другой стороны, WPF - это XAML (?) + Код (?), Который выглядит гораздо более сложным способом медленного создания более симпатичных интерфейсов.

Существует множество существующих SO вопросов по аспектам WPF, но я ищу клуб из двух предложений о том, как его разгадать. Должен ли я просто сосредоточиться на изучении XAML? Или настоящий WPF написан путем прямого доступа к классам и написания кода (например, Winforms)?

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

Ответы [ 8 ]

11 голосов
/ 27 апреля 2009

WPF приносит

  • Декларативное программирование пользовательского интерфейса : представление или внешний вид пользовательского интерфейса (XAML) отделены от кода (.cs et. All), так что XAML может быть создан независимо людьми, которые хорошо разбираются такого рода вещи - графические дизайнеры. Затем они представляют готовый вид разработчикам, которые просто пишут код, чтобы он работал. (Более простые вещи могут быть снова обработаны непосредственно в XAML) Предполагается, что это даст вам больший параллелизм и хороший UX (в отличие от пользовательских интерфейсов, утвержденных разработчиками)
  • Привязка данных : Опять декларативное сгибание. Вы декларативно указываете, какое свойство модели отображает этот элемент управления пользовательского интерфейса, WPF заботится о том, чтобы передать данные в элемент управления и обновить измененное содержимое обратно вместе с уведомлениями об изменениях.
  • Улучшено Модель составного управления - Теперь вы можете встраивать практически все, что угодно, поэтому теперь воображение не знает границ.
  • Шаблоны данных, шаблоны управления и т. Д. - опять отделение интерфейса от кода. Эти шаблоны XAML указывают ( Once ), как структура данных или элемент управления UI должны выглядеть для пользователя.
  • Лучше в X : Конечно, MS улучшил множество других аспектов, таких как рендеринг (меньше обновлений, чем GDI), Масштабирование (независимость от разрешения), Прозрачность, Макеты (не абсолютные), Рендеринг текста, Анимация И поддержка видео, улучшенная модель событий, et. все
  • Стили, триггеры : проще применять единообразный внешний вид в глобальном масштабе с помощью стилей в одном месте (снова XAML). Триггеры - это блоки кода, которые выполняются, когда происходит какое-либо событие, например, 'текст этого элемента управления изменился .. поэтому теперь измените его свойство переднего плана на синий, чтобы указать "изменено"'. Простые вещи можно сделать прямо в XAML.
1 голос
/ 04 мая 2009

Я работал почти исключительно в WinForms в течение последних 4 лет и начал использовать WPF для нескольких небольших проектов на работе. Кривая обучения крутая. Но как только вы к этому привыкнете, оно того стоит.

WPF - это гораздо больше, чем просто визуальные эффекты, такие как скиннинг или анимация. Даже для базовых приложений для отслеживания заказов на доставку вы можете использовать WPF. WinForms только берет вас до сих пор с его элементами управления. Если вы хотели отобразить слегка настроенный пользовательский интерфейс, вам часто приходилось выполнять пользовательское рисование в ваших элементах управления с использованием GDI, что может быстро стать кошмаром. В WPF настраивать что-либо тривиально с помощью шаблонов данных. Вы можете легко настраивать элементы списка, добавлять элементы управления в столбцы представления списка или заголовки и т. Д. WPF позволяет управлять сложными макетами пользовательского интерфейса с помощью мощной системы макетов. Я также поражен тем, как мало кода требуется в WPF для выполнения тех же задач, которые я использовал в WinForms, так что это означает меньше ошибок и упрощение обслуживания приложений.

1 голос
/ 27 апреля 2009

Полагаю, одним из способов было бы рассмотреть веб-страницы HTML + CSS. У нас был HTML, и это было здорово, за исключением того, что все перемешано. Люди поняли, что с помощью CSS вы можете отделить структуру документа от его представления . XAML делает то же самое или, по крайней мере, разрешает и поощряет это.

Что касается практических преимуществ, просмотрите примеры MSDN. Я склонен думать, что WPF больше ориентирован на так называемые «мультимедиа» с гораздо более сложными элементами. Ваш пример приложения, которое отслеживает заказы на доставку, не очень хороший, тем более что некоторые из этих систем по-прежнему работают в интерфейсах на основе DOS.

0 голосов
/ 05 июня 2015

Здесь я пытаюсь ответить на очень простые наивные термины о некоторых вопросах WPF, с которыми сталкиваются новички / разработчики winforms, и о том, с чем я столкнулся, когда начинал с WPF. В Интернете есть много статей и учебных пособий, которые дают достаточно знаний, но трудно найти ответы на очень простые вопросы. Я пытаюсь решить это здесь.

Что такое WPF?

Windows Presentation Foundation по мере расширения; это система «Презентация» для создания оконных приложений. Если вы - разработчик winforms, главное отличие, которое вы найдете в WPF, заключается в том, как выглядит дизайнер. В отличие от winforms код конструктора - это не код C #, а код XAML.

Почему WPF?

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

Что такое MVVM?

MVVM - это шаблон, который адаптируется при разработке приложений. Он расширяется как «Model View View Model», в основном при структурировании проекта у нас есть папка модели, в которую будут помещены все файлы модели (.cs), в папке модели представления все файлы viewmodel (.cs) будут помещен и под папкой просмотра будут помещены все файлы представления (.xaml). Если используется MVVM, то не будет никакого кода, означающего, что в файле .xaml.cs не будет никакого кода, кроме автоматически созданного метода.

Модель : Модель имеет часть бизнес-логики, которая поддерживает модель представления данными, которые в конечном итоге будут представлены в представлении.

ViewModel : у каждого вида будет модель вида. Viewmodel будет реализовывать интерфейс INotifyPropertyChanged и будет иметь все свойства, которые связаны с соответствующим представлением. Модель представления не загружена какой-либо бизнес-логикой, и ответственность лежит на модели.

View : View - это не что иное, как файл xaml, в котором спроектировано окно. XAML - это язык разметки. В WPF, в отличие от winforms, каждый элемент управления будет связан со свойством зависимости либо предопределено, либо определено пользователем.

Почему MVVM?

Всякий раз, когда приложение разрабатывается в WPF, MVVM всегда пригодится. Одним из самых больших преимуществ использования MVVM является то, что он делает возможным независимое от UI модульное тестирование, поскольку во время модульного тестирования нет кода, не требующего объектов, связанных с UI, и, следовательно, возможно 100% покрытие кода. В модульном тесте «команды» (ищите команды в wpf) могут быть переданы пользователем для проверки конкретного варианта использования.

Требуется ли мандат или абсолютно необходимо использовать MVVM при работе с WPF?

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

Могу ли я иметь несколько моделей представлений для одного представления / несколько представлений для одной модели представления?

ЭтоВопрос, на который у меня нет четкого четкого ответа ни в одном сообществе .net. Прежде всего, поскольку мы увидели, что основной целью перехода на MVVM является достижение 100% покрытия кода, это делает очевидным, что мы будем тестировать каждую модель представления независимо, и, следовательно, тестируется полная форма. Имея это в виду, лучше выбрать один вид и один видмодельный подход. Мы всегда можем общаться между моделями представления, если есть необходимость, используя MVVM Light messenger или любым другим способом, который облегчает это.

В чем разница между моделью и моделью?

Это один вопрос, который всегда будет у начинающих, поскольку они не находят большой разницы между ними. Вот разница: Модель - это не что иное, как класс, который имеет методы данных для изменения данных, которые будут использоваться в модели представления и в конечном итоге привязываться к представлению. ViewModel просто имеет свойства, которые будут привязаны к представлению. В методах get или set можно вызвать метод в модели для получения данных. Опять же, эта модель для этой конкретной модели представления. Теперь вы можете решить, нужен ли вам класс модели, если нет тяжелой бизнес-логики, тогда вы можете избежать класса модели и поместить его в модель представления, но более чистым будет использование класса модели.

В MVVM можно ли пропустить модель вида или класс модели для вида?

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

0 голосов
/ 27 апреля 2009

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

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

0 голосов
/ 27 апреля 2009

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

0 голосов
/ 27 апреля 2009

XAML-часть приложения WPF является смутной заменой файла WinForm.Designer.cs в WinForms.

Модель WPF имеет лучший дизайн для пользовательского интерфейса и отдельных элементов управления, исправляет многие недостатки WinForms и помогает (как мы надеемся) улучшить дизайн Отдела концерна.

0 голосов
/ 27 апреля 2009

Visual Studio 2008 содержит конструктор WPF.

Это видео может представлять интерес: Создание приложения C # WPF в Visual Studio 2008

...