В течение долгого времени я застрял в разработке Windows Forms (начал с VB6 и продолжил до C # .NET 4.5), и я почти достиг предела возможностей Windows Forms, как с использованием чистого .NET. и специальные эффекты с помощью собственного кода.
Я пытался изучить WPF и XAML, но застрял в новом конструкторе WPF. Это действительно кажется очень сложным в использовании по сравнению с конструктором Windows Forms.
Я хочу знать, есть ли альтернативы конструктору .NET WPF, которые больше подходят для разработчиков Windows Forms?
Ответы:
Мне нравится вести блог о статьях для начинающих по WPF, и есть несколько, в частности, которые могут вам помочь:
Подводя итог, самое большое различие между Winforms и WPF заключается в том, что в WPF ваш уровень данных (
DataContext
) - это ваше приложение, а в Winforms ваш слой пользовательского интерфейса - это ваше приложение.Чтобы взглянуть на это с другой стороны, с WPF ваше приложение состоит из объектов, которые вы создаете, и вы используете шаблоны и другие объекты пользовательского интерфейса, чтобы сообщить WPF, как рисовать компоненты вашего приложения.
Это противоположно WinForms, где вы создаете свое приложение из объектов пользовательского интерфейса, а затем предоставляете им необходимые данные.
Из-за этого конструктор на самом деле не так часто используется, поскольку компоненты вашего приложения создаются в коде, а конструктор нужен только для рисования удобного интерфейса, отражающего ваши классы данных (обычно
Models
иViewModels
)Лично я предпочитаю набирать весь свой XAML вручную, так как это быстрее и не создает такого беспорядка, как конструктор WPF с перетаскиванием / удалением, хотя я иногда использую конструктор, чтобы предварительно просмотреть, как будет выглядеть мой интерфейс лайк.
Итак, чтобы ответить на ваш вопрос о том, есть ли другие дизайнеры WPF, подходящие для разработчиков WinForms, я бы посоветовал вместо того, чтобы искать другого дизайнера, вместо этого посмотреть, чтобы узнать, как использовать WPF так, как он должен использоваться. Использование WPF, как WinForms, означает, что вы упускаете многое из того, что делает его таким замечательным :)
источник
Хотя некоторые люди не согласны с этим, я бы также рекомендовал не использовать конструктор VS. По крайней мере, не для создания интерфейса. Если вы хотите получить первое впечатление о своей реализации, не запуская приложение, это хороший просмотрщик, по крайней мере, до тех пор, пока не используются такие сложные вещи, как
Styles
иTemplates
. Но, IMHO, его результат перетаскивания следует использовать только в качестве прототипа и, следовательно, отбрасывать после того, как он больше не нужен.Вот несколько причин, по которым я не могу его использовать.
Дизайнер VS работает с исправлением полей и выравнивания (что обычно не требуется, если вы используете элементы управления макетом), это означает, что вам нужно коснуться многих элементов управления, если требования изменились. Если вы глубоко знакомы с XAML и механикой WPF, вы можете создавать приложения, которые можно изменять с небольшими усилиями, что касается внешнего вида.
Поскольку дизайнер генерирует xaml, композиция не оптимальна, и пользовательский интерфейс может работать плохо. Я не измерял, это просто ощущение.
Гораздо лучшая альтернатива - MS Blend , хотя начало совсем не просто. Его результат перетаскивания намного лучше, чем результат дизайнера VS.
Но это довольно мощный инструмент, который помогает вам использовать довольно мощные элементы для создания современного пользовательского интерфейса. Рекомендую посетить хотя бы небольшой семинар, чтобы ознакомиться с его возможностями.
Возвращаясь к вашему вопросу, ИМХО, и я думаю, что многие люди согласятся, купите себе хорошую книгу, например, WPF Unleashed и более поздние версии, если вы хотите узнать больше о деталях, WPF Pro . Есть много функций, которые отличаются от
Winforms
. Вы не узнаете их ни с одним дизайнером. Думаю, это лучший подход.Также учтите, что существует множество фреймворков и библиотек (например, MVVM light , WPFToolkit ), которые уже решают некоторые общие проблемы. Так что нет необходимости изобретать велосипед.
источник
Я знаю, что это старый вопрос, но для пользы всех, кто смотрит на него, я думаю, что мне следует немного исправить баланс - читая некоторые другие ответы, у меня возникает ощущение, что некоторые из них `` не используют конструктор чувство возникает из-за неправильного использования. Это руководство очень полезно для начала и отвечает на некоторые критические замечания в других сообщениях.
Например, вы можете переключиться с Winforms-подобного макета на основе полей, который используется по умолчанию, когда вы отбрасываете элемент управления, на более WPF-стиль, щелкнув правой кнопкой мыши и выбрав «Сбросить макет».
Это видео касается схожей темы.
Я по-прежнему предпочитаю конструктор VS2010 в целом - VS2013 кажется немного глючным при перетаскивании на TabItems ** (который в моем текущем проекте часто используется), но представление VS2013 Document Outline позволяет вам перемещать вещи и в этом представлении , что может быть большим плюсом.
На самом деле, чтобы получить максимальную отдачу от WPF и xaml, вам нужно достаточно свободно владеть как представлением конструктора, так и представлением xaml и переключаться между ними; Если вы избегаете дизайнера, вы упускаете то, что может вам очень помочь.
** Изменить - хотя это, кажется, было улучшено в обновлении 3 для VS 2013 и в предварительных версиях VS14, на сегодняшний день я все еще иногда получаю странное поведение.
источник
Прежде всего, в WPF (XAML) в Visual Studio deisgner вы всегда должны использовать код xaml для создания пользовательского интерфейса, а не перетаскивать управление! Вам нужно держать свой код в чистоте. Вы можете использовать Expression Blend, чтобы помочь вам, он более ориентирован на графику с перетаскиванием, но это не бесплатно.
Это не большая кривая обучения, но я думаю, вам следует научиться делать xaml вручную, а не искать альтернативу.
источник
Я прошел через этот процесс, как и вы. После этого я обучал всех в своей компании WPF. Я извлек несколько важных уроков и все, кого я знаю, кто работает с WPF.
Это делает разработку пользовательского интерфейса увлекательной. Особенно, когда вы узнаете, как он любит подыгрывать процессам Asyc. Это действительно избавляет от многих головных болей, вызванных Winforms.
источник