Xamarin.Forms - Как разработать допустимый синтаксис XAML из документации API

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

Например, для элемента управления меткой я думаю, что могу увидеть, какие атрибуты я могу установить для него, просмотрев его доступный список свойств - http://iosapi.xamarin.com/?link=T%3aXamarin.Forms.Label%2fP

Но для чего-то вроде RelativeLayout (http://iosapi.xamarin.com/?link=T%3aXamarin.Forms.RelativeLayout), у которого есть только свойство Children, как мне настроить такие вещи, как показанные в коде, для управления его дочерними ограничениями и т.п.


person WickedW    schedule 18.07.2014    source источник


Ответы (2)


Я бы отказался от этого усилия прямо сейчас.

Вместо этого найдите исходный код Xamarin.Forms, щелкнув правой кнопкой мыши имя класса в коде и выбрав «Перейти к объявлению» - вы можете увидеть весь исходный код из Xamarin.Forms и многих других библиотек.

Код не врет, документация - не уверен :)

Если вы сделаете это на Label, вы увидите его Связываемые свойства прямо над классом, включая их тип. Теперь посмотрите на FontProperty - в параметрах типа есть ссылка на класс Font - щелкните по нему. У класса есть атрибут [TypeConverter(typeof(FontTypeConverter))]. Щелкните FontTypeConverter и посмотрите, как это работает.

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


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

Примерный набросок того, как работает XAML:

У вас есть классы, созданные в .NET и, возможно, отмеченные некоторыми атрибутами. XAML позволяет десериализовать сложную структуру из XML.

Каждый элемент XML отображается на тип класса. Каждый атрибут XML отображается на свойство этого класса. Некоторые свойства легко вписать в атрибут (см. Пример «Шрифт» выше, другой - «Цвет»); свойства, которые сами по себе являются структурами, могут быть определены внутри дочернего элемента XML с именем, например:

<Label Text="this is a label">
  <Label.Font>
   <Font....>
  </Label.Font>
</Label>

Существует несколько важных концепций, связанных с XAML, например:

  • BindlableObject, позволяющий привязать значения свойств к одному -другой, поэтому, когда одно меняется, другое тоже меняется

  • Расширения разметки позволяют для выражения вещей в XAML, таких как ссылка на ресурс или создание привязки

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

person Sten Petrov    schedule 18.07.2014
comment
Спасибо, я согласен с тем, что было бы очень полезно разобраться в исходном коде, особенно при отсутствии документации (но, очевидно, очень много времени, если вы просто хотите знать, как разместить несколько дочерних элементов для макета!). Может быть, мне стоит изменить вопрос, как создать XAML, глядя на код? Если лучшие предложения не будут отмечены как ответ, я посмотрю, смогу ли я его расшифровать, когда узнаю больше о XAML / Forms. - person WickedW; 18.07.2014
comment
обновленный ответ, имеет ли смысл связь кода с XML XAML? - person Sten Petrov; 18.07.2014
comment
Спасибо, подробнее рассмотрим концепции XAML, как вы предлагаете. - person WickedW; 18.07.2014
comment
Это хороший ресурс для изучения концепций, которые @Sten обсуждает выше - msdn.microsoft.com/en-us/library/cc189036%28v=vs.95%29.aspx - person WickedW; 23.07.2014

Я не знаю, используете ли вы VS, но с xaml нет никакого intellisense, я использую Xamarin Studio только для XAML, так как там есть автозаполнение.

person AnthonyFG    schedule 19.08.2014
comment
Спасибо, Энтони, я использовал XS, но даже этот intellisense не помог на 100%, вернусь к XF в будущих выпусках. - person WickedW; 20.08.2014