WPF с кодом только

Я видел много вопросов о достоинствах WPF здесь, и по существу в каждом ответе говорится, что это - колени пчелы, но по существу каждый ответ также говорит о вещах как XAML, во многих случаях графические дизайнеры и Смешение Выражения и т.д. Мой вопрос, действительно ли стоит войти в WPF, если Вы - сольный кодер, работающий в C# только?

А именно, у меня нет графического дизайнера, ни любого большого таланта в той области самого; я не использую инструменты "укажи и выбери"; я пишу все в C#, не XML.

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

6
задан rwallace 16 May 2010 в 16:08
поделиться

5 ответов

Краткий ответ : да, вы можете делать WPF только с кодом.

Более длинный ответ : Часть о том, что дизайнер может работать над пользовательским интерфейсом, а разработчик - над функциональностью, на самом деле является побочным эффектом отделения функциональности от представления.

Что WPF дает в таблице мощным способом, так это привязка данных, которая позволяет использовать более широкий спектр шаблонов проектирования. MVVM недавно довольно подробно обсуждался.

  • Различная инфраструктура MVVM поощряет соглашение по конфигурации, позволяя вам писать меньше кода для достижения тех же целей.
  • Эта развязка также имеет приятный побочный эффект, заключающийся в том, что ваше приложение становится более тестируемым (вам не нужно писать тесты, если вы этого не хотите, но, по крайней мере, такая возможность есть).

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

Если вы еще не видели, то серия BabySmash Скотта Хансельмана весьма интересна.

4
ответ дан 8 December 2019 в 13:44
поделиться

Я сам кодирую, и, честно говоря, это не имеет значения. Даже если вы ничего не знаете о графическом дизайне, вы все равно можете использовать редактор в Visual Studio для разработки пользовательского интерфейса. В конструкторе есть конструктор перетаскивания, как и в Win Forms, так что это не проблема. Несмотря на то, что я программист, у меня нет проблем с xaml, поскольку это в некотором роде снова код. Сначала у меня тоже были проблемы с xaml, но я привык к нему, и то, что мне приходилось делать в коде в Win Forms, было довольно просто в xaml.

Привязка данных просто потрясающая, вам не нужно заботиться о передаче данных в пользовательский интерфейс, у вас просто есть ObservableCollection или аналогичный, и одно свойство в коде xaml, и все готово для тебя. Хотите отформатировать данные? Просто добавьте в привязку свойство форматирования. Хотите раскрасить текст по значению? Класс Template Selector с 15 строками кода, привязкой и выбором шаблона в коде xaml около 10 строк. Мне это очень нравится, и со временем (как и с любой другой новой технологией) ты привыкаешь к ней и получаешь красивые вещи.

6
ответ дан 8 December 2019 в 13:44
поделиться

ИМХО, стоит пойти по пути WPF хотя бы для того, чтобы вы развили эти навыки. Я играл с Silverlight, который основан на XAML, и я мог бы передать большую часть этих знаний. в WPF, хотя SL является подмножеством.

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

3
ответ дан 8 December 2019 в 13:44
поделиться

Все, что можно сделать в XAML, также можно сделать в коде, потому что XAML - это просто DSL для создания и настройки графов объектов, особенно тех, что находятся в библиотеке WPF ( System.Windows ). Если вы создаете линейку бизнес-приложений, то WPF предлагает очень мало, чего вообще нет в WinForms. Ключевое отличие состоит в том, что WPF позволяет делать многие вещи намного проще и гибче благодаря более продвинутой объектной модели.

Я думаю, что WPF, безусловно, стоит изучить, но если вы хотите сделать это, не изучая XAML, я думаю, вам, вероятно, будет сложнее.

Также стоит учесть, что многие разработчики WPF пишут XAML вручную (тогда как их коллеги-конструкторы с большей вероятностью будут использовать Blend в первую очередь) отчасти по необходимости (конструктор WPF до Visual Studio 2010 был не очень хорош. ) и отчасти потому, что объектная модель допускает более сжатое выражение в XAML, чем в C #.XAML сам по себе является довольно маленьким языком, но объектная модель, для определения которой он используется (объектная модель WPF), огромна - и отсюда и сложность.

Если у вас нет веских причин прекращать использование WinForms, не делайте этого. Однако, если вы можете отказаться от своих предубеждений относительно написания кода на XML, а не на C #, я думаю, вы можете быть удивлены, как этот другой подход к созданию пользовательского интерфейса может очистить ваш код.

3
ответ дан 8 December 2019 в 13:44
поделиться

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

1
ответ дан 8 December 2019 в 13:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: