2015-03-29 6 views
2

Недавно я присутствовал на разговоре о Xamarin, и нам не хватало возможности использовать XAML для нашего дизайна пользовательского интерфейса. Недавно я начал мобильную разработку, и я хотел бы знать, какой из них лучше всего подходит для создания пользовательских интерфейсов; делать это программно или использовать XAML?Xamarin UI: Программно VS XAML

ответ

3

Очень субъективный вопрос. В настоящее время состояние Xamarin Forms XAML аналогично раннему Silverlight с точки зрения поддержки дизайнеров. Точно так же в Visual Studio недостаток Xaml Intellisence был, хотя, если вы используете последнюю версию Resharper, он предоставит Intellisense для него.

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

Сказав все это, я использую XAML. Он имеет тенденцию быть стандартом дефакто в разработке с языками, имеющими XAML. Я также подозреваю, что дизайнер Xamarin Forms XAML придет. Как и в ранние дни Silverlight, я убежден, что использование XAML может быть не самым простым сегодня, но, скорее всего, это лучший вариант для подготовки вашей кодовой базы на завтра. После кодирования пользовательского интерфейса у вас будет достаточно задачи переключиться на XAML, когда инструмент догонит.

Но, как я уже говорил, субъективный вопрос.

0

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

Сказав это, формы Xamarin все еще очень молоды, и я много раз встречался в плагинах, у которых нет поддержки Xaml, поэтому мне пришлось манипулировать пользовательским интерфейсом, используя код позади, но я делаю это только в крайнем случае.

10

EDIT 2017 - С XAMLC (XAML-компилятором, далее here) XAML компилируется в IL код во время сборки так не XAML разбора не участвуют во время выполнения больше. Во многих случаях это делает XAML столь же быстрым или очень близким к кодированию пользовательского интерфейса в коде с кодом C#

Я предполагаю, что вы спрашиваете о Xamarin Forms.

Было бы интересно, если бы вы могли указать причины, по которым вы слышали, что XAML плохой.

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

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

Я не согласен с декларативным интерфейсом UI (XAML) и кодированным интерфейсом, это всего лишь вопрос личного вкуса.

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

  • Это coincise, это безличный

    За исключением нескольких вещей, XAML выглядит одинаково для всех. Вы не можете сказать то же самому о фоновом коде C# кодирование

  • Это более ремонтопригодно

    гораздо легче читать и модифицировать, чем код

  • Это помогает с четким разделением относится к, между пользовательским интерфейсом и логикой

  • Инструмент дружественный. К сожалению, Xamarin Forms сегодня по-прежнему не имеет дизайнера, но это должно измениться. Существует XAML Previewer, но он по-прежнему не работает на 100%.

Я НЕ говорю, что XAML совершенен. Но я думаю, что это лучше, чем кодирование пользовательского интерфейса в коде.

Когда кто-то говорит, что XAML плохо, я не могу не думать о HTML. Не слишком ли плохо? Лучше ли создавать HTML в Javascript? Очевидно нет. Я знаю, что некоторые скажут, что вы не можете сравнивать XAML и HTML, потому что XAML не является «родным», как HTML, но не являются ли только слоями презентации?

Я думаю, что разработчики с нативной фоне IOS имеет сильную склонность к не используя декларативный интерфейс, потому что, как, к сожалению, в основном работает развитие родной IOS. Вы вынуждены использовать код для реализации различных вещей, которые недоступны в дизайнере, и нет родного декларативного языка разметки пользовательского интерфейса (есть один, но формат не является общедоступным, и он не предназначен для непосредственного изменения).

Вы могли бы знать это сейчас, но Xamarin Forms не единственный способ создания приложений с Xamarin. Xamarin! = Xamarin Forms. Вы можете самостоятельно построить свой пользовательский интерфейс и по-прежнему делиться логикой (ViewModels, services и т. Д.). На Android вы можете создать свой интерфейс в AXML. Вы получите ближе к металлу, который вы можете получить с Xamarin. Но вам понадобится привязка данных, поэтому такая инфраструктура, как MvvmCross, может помочь в этом.

+0

Спасибо за ваш ответ, очень полезно :-) – CodeSlave

+0

Я бы сказал, что это сильно зависит от целевого вида. Что-то вроде RelativeLayout, безусловно, проще с кодом и несколькими другими местами, где код быстрее и чище. С другой стороны, intellisense упрощает создание привязок в XAML и уменьшает ошибки из-за неправильных имен свойств. – SKall

+0

@SKall рядом с представлением, я не думаю, что вы должны сделать это в коде, это не о том, какой путь проще –

0

лично я предпочитаю делать кросс-платформенный без использования Xamarin.Forms. Я чувствую, что проще создавать более выразительные и приятные интерфейсы для каждой платформы, используя собственные API интерфейса. Опять же, как говорили другие, нет «лучшего» способа сделать это, все зависит от предпочтений. Мне лично очень нравится использовать конструктор интерфейса iOS для создания своих представлений, а затем подключить их к своим настраиваемым контроллерам представлений. Это самое удобное для меня, и IMO позволяет мне создавать более богатые, более выразительные пользовательские интерфейсы для моих пользователей.

2

Это был мой опыт, что каждый инструмент первенствует или под выполняет в зависимости от контекста, в котором она используется. XAML в Xamarin.Forms ничем не отличается.

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

В недавнем проекте я использую оба. XAML для большинства пользовательских интерфейсов и C# для таких вещей, как динамически сгенерированные формы. Ниже приведен короткий и, по общему признанию, предвзятый/неполный список плюсов и минусов для определения того, где использовать.

XAML Pros -

  • Более четкое разделение логики и UI
  • легче читать, когда UI реализует стили, триггеры, переплеты
  • Легче добавить вторую версию пользовательского интерфейса для отличается форм-фактор (таблетка/телефон/часы)

XAML Против -

  • Труднее создать единую реализацию генерации пользовательских страниц
  • Intellisense в настоящее время не поддерживается без добавления дополнений или в SAP для Visual Studio
  • Это не полный набор XAML, как вы получите в Проект WPF

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

+0

Сегодня XAML intellisense отлично работает как в Visual Studio, так и в Xamarin Studio. –

+0

«Это не полный набор XAML, который вы бы получили в проекте WPF», который не имеет никакого отношения к выбору между использованием XAML в форматах Xamarin или кодированием пользовательского интерфейса по коду за –

+0

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