2009-04-27 3 views
10

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

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

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

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

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

+3

Grawk = grok + awk - отличное новое слово – MrTelly

ответ

1

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

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

0

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

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

0

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

+2

Это «должно» быть каждым программистом WinForms, но мне нравится дизайнер WinForms. Дизайнер WPF SUCKS - и мне сказали не использовать его, а просто код в XAML ... вздох! – series0ne

11

WPF приносит

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

Хорошая деталь, но вам нужен prècis: WPF - это разметка для пользовательского интерфейса, ла-HTML, с прямой поддержкой большинства GDI + и обширной явной привязки для событий пользовательского интерфейса. –

0

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

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

1

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

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

+0

Если вы можете, пожалуйста, разместите ссылку или два из существующих документов или руководств для программистов «WPF для Windows Forms». Это было бы полезно. – zumalifeguard

+0

WPF и WinForms имеют очень мало общего, поэтому любой учебник должен делать. Хорошее место для просмотра - http://www.wpftutorial.net. –

0

Здесь я пытаюсь ответить в очень простых наивных терминах по некоторым вопросам WPF, с которыми сталкиваются разработчики beginners/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: Просмотреть не что иное, как файл 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 и в конечном итоге привязаны к представлению. ViewModel имеет свойства, которые будут привязаны к представлению. В методах get или set можно вызвать метод в модели для получения данных. Опять же эта модель предназначена для этой конкретной модели представления. Теперь вы можете решить, действительно ли вам нужен класс модели, если нет тяжелой бизнес-логики, тогда вы можете избежать класса модели и поместить его в viewmodel, но уборщица будет использовать класс модели.

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

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

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