Переход с Windows Forms на WPF

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

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

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

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

5 ответов

Решение

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

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

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

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

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

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

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

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

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

Это видео охватывает аналогичную почву.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам