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

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

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

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

WPF, с другой стороны, это XAML (?) + Code (?), который выглядит гораздо более сложным способом сделать более красивые пользовательские интерфейсы медленно.

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

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

4b9b3361

Ответ 1

WPF приносит

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

Что такое WPF?

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

Почему WPF?

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

Что такое MVVM?

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

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

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

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

Почему MVVM?

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

Является ли это мандатом или абсолютно необходимым для работы с MVVM при работе с WPF?

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

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

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

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

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

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

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