Переход от Windows Forms в WPF


в течение длительного времени я застрял с разработкой Windows Forms (начатой с VB6 и продолженной до C# .NET 4.5), и я в значительной степени достиг предела того, что могут делать Windows Forms, как с использованием чистого .NET, так и специальных эффектов с собственным кодом.

Я знаю, что WPF-это будущее (на данный момент), и Windows Forms замедляется, становясь устаревшей технологией.

Я попытался изучить WPF и XAML, но я застрял прямо в новом WPF designer...It действительно кажется очень сложным в использовании по сравнению с конструктором Windows Forms...конечно...это просто кривая обучения, и в какой-то момент я планирую пойти на курс, чтобы правильно изучить WPF.

тем временем, я хочу знать, есть ли какие-либо альтернативы WPF designer .NET, которые больше подходят для разработчиков Windows Forms?

5 103

5 ответов:

мне нравится вести блог о начинающих статьях для WPF, и есть несколько, в частности, которые могут помочь вам:

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

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

Это противоположность WinForms, где вы строите свое приложение из объектов пользовательского интерфейса, а затем предоставляете им необходимые данные.

из-за это, конструктор фактически не используется так много, так как ваши компоненты приложения разработаны в коде, и дизайнер нужен только для создания удобного интерфейса, который отражает ваши классы данных (обычно Models и ViewModels)

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

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

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

например, вы можете переключиться с макета на основе полей Winforms, который является по умолчанию при удалении элемента управления, в более WPF-ish стиль, щелкнув правой кнопкой мыши и выбрав "сброс макета"

видео покрывает подобную землю.

Я по - прежнему предпочитаю VS2010 designer на балансе - VS2013, кажется, немного глючит при перетаскивании на TabItems**, (который мой текущий проект использует много) - но VS2013 document Outline view позволяет перемещать вещи в этом представлении тоже, что может быть реальным плюсом.

на самом деле, хотя, получите максимальную отдачу от WPF и xaml вам нужно достаточно свободно владеть как представлением конструктора, так и представлением xaml и переключаться между ними; если вы уклоняетесь от конструктора, вы упускаете что-то, что может вам очень помочь.

** Edit-хотя это, кажется, было улучшено в обновлении 3 для VS 2013 и в превью VS14, на сегодняшний день я все еще получаю странное поведение время от времени.

ну хотя, некоторые люди не согласны, я бы также рекомендовал не использовать VS designer. По крайней мере, не для создания интерфейса. Если вы хотите получить первое впечатление от своей реализации без запуска приложения, это хороший зритель, по крайней мере, пока нет сложных вещей, таких как Styles и есть. Но, ИМХО, его перетащите результат должен использоваться только в качестве прототипа и поэтому быть отброшен после того, как он больше не нужен.

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

  1. VS designer работает с фиксированными полями и выравниваниями (что обычно не требуется, если вы используете элементы управления макетом), означает, что вам нужно коснуться многих элементов управления, если требования изменены. Если вы глубоко разбираетесь в XAML и механике WPF, вы можете создать приложения, которые можно изменить с небольшими усилиями, относительно внешнего вида.

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

гораздо лучше MS Blend, хотя начало все остальное, но легко. Его перетащите результат гораздо лучше, чем результат VS designer.
Но это довольно мощный инструмент, который поможет вам использовать довольно мощные элементы для создания современного пользовательского интерфейса. Рекомендую посетите хотя бы короткий семинар, чтобы получить представление о его возможностях.

возвращаясь к вашему вопросу, ИМХО, и я думаю, что многие люди согласны, получить себе хорошую книгу, например WPF Unleashed и позже, если вы хотите узнать больше о деталях,WPF Pro. Есть много функций, которые отличаются от Winforms. Вы не узнаете их с помощью любого дизайнера. Я думаю, что это лучший подход.

пожалуйста, Также учтите, что есть много фреймворки и библиотеки (например MVVM light,WPFToolkit) там, которые уже решают некоторые общие проблемы. Так что не стоит изобретать велосипед.

во-первых, в WPF (XAML) в Visual Studio deisgner вы всегда должны использовать код xaml для создания пользовательского интерфейса и не перетаскивать элементы управления! Вы должны держать свой код в чистоте. Вы можете использовать Expression Blend, чтобы помочь вам, это более графический ориентированный с перетаскиванием, но это не бесплатно.

Это не большая кривая обучения, но я думаю, что вы должны научиться делать свой xaml вручную, а не искать альтернативу.

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

  1. Если вы работаете с пользовательским интерфейсом в коде, .... Тогда вы делаете это неправильно. Нет абсолютно никакой необходимости для вас, чтобы разобраться с пользовательским интерфейсом в коде.
  2. вам не нужен визуальный разработчик для нажатия на него. Вы гораздо больше продуктивно работать только с XAML. Используйте Копировать / Вставить. Не доверяйте своим возможностям набора текста. Это сэкономит много головной боли.
  3. думайте о XAML как о окне, которое блокирует данные. В коде позади вас изменяются данные. В XAML вы определяете, как пользовательский интерфейс будет интерпретировать данные.
  4. преобразователи удивительны. Как только вы получите ключевое количество конвертеров, ваша производительность взлетит до небес. Они возьмут на себя роль сумасшедшего количества контроля обработчики событий, которые скрывают или изменяют размер, или что когда-либо о UI,

Это делает разработку пользовательского интерфейса удовольствие. Особенно после того, как вы узнаете, как он любит играть вместе с процессами Asyc. Это действительно снимает много головных болей, которые были вызваны Winforms.