BindingContext Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Вспомогательный класс, используемый для сопоставления структур и классов с элементами пользовательского интерфейса в MonoTouch.Dialog.
public class BindingContext : IDisposable
type BindingContext = class
interface IDisposable
- Наследование
-
BindingContext
- Реализации
Комментарии
Построение диалогового окна на основе отражения используется путем создания объекта класса MonoTouch.Dialog.BindingContext. Метод принимает три параметра: (1) объект, который будет использоваться для разрешения целевых объектов Tap, (2) объект, который будет изменен, и (3) заголовок для него.
Пользовательский интерфейс создается на основе типа редактируемого объекта. Тип может содержать объекты следующих типов: string, bool, перечисления, floats, integers, DateTimeT:MonoTouch.UIKit.UIImage, а также могут быть дополнены несколькими атрибутами, которые управляют созданием пользовательского интерфейса.
Здесь показано очень простое диалоговое окно, содержащее флажок:
class Settings {
public bool AirplaneMode;
}
В приведенном выше примере создается страница, содержащая один элемент с подписью "Режим в самолете" и переключателем включения и выключения. Заголовок вычисляется на основе имени поля. В этом случае "AirplaneMode" становится "Режим в самолете". MonoTouch.Dialogs поддерживает другие соглашения, поэтому "AirplaneMode", "airplaneMode" и "airplane_mode" создают один и тот же заголовок "Режим в самолете".
Если вам нужно управлять фактической подписью (например, чтобы включить специальные символы, использовать другую орфографию или повторно использовать существующий класс), необходимо просто прикрепить атрибут [Caption] к переменной следующим образом:
[Caption ("Your name is:")]
string userName;
Содержимое диалогового окна отображается в том же порядке, что и поля, объявленные в классе . Атрибут [Section] можно использовать для группировки сведений в разделах, которые нужны. Атрибут [Section] можно использовать несколькими способами:
[Section]
При этом создается новый раздел без колонтитулов.
[Section (header)]
>> Создает новый раздел с указанным верхним колонтитулов и без нижнего колонтитула.
[Section (header, footer)]
>> Создает новый раздел с указанными верхними и нижними колонтитулами.
Ниже перечислены текущие мини-приложения, поддерживаемые API отражения:
Строковые константы и кнопки.
Используйте строковый тип. Если тип имеет значение, в дополнение к отображению заголовка он будет отображать его значение справа.
В строку можно добавить атрибут [OnTap], чтобы вызвать метод по запросу.
Вы можете добавить атрибут [Multiline] в строку, чтобы ячейка отрисовывалася в нескольких строках. Кроме того, можно использовать атрибут [Html] в строке. В этом случае значение строки должно содержать URL-адрес для загрузки во внедренном элементе UIWebView.
Атрибут [Aligntment] принимает параметр UITextAlingment, который определяет способ отрисовки строки.
Примеры:
public string Version = "1.2.3";
[OnTap ("Login")]
public string Login;
[Caption ("(C) FooBar, Inc")]
string copyright;
[Caption ("This is a\nmultiline caption")]
[Multiline]
string multiline;
[Caption ("Date")]
[Alignment (UITextAlignment.Center)]
string centered;
Текстовые записи и записи паролей.
Используйте тип строки для поля и примечайте строку атрибутом [Entry]. Если указать аргумент для атрибута [Entry], он будет использоваться в качестве неактивного значения заполнителя для UITextField.
Используйте атрибут [Password] вместо [Entry] для создания строки безопасного входа.
Примеры:
[Entry ("Your username")]
public string Login;
[Entry]
public string StreetName;
[Password, Caption ("Password")]
public string passwd;
Вы также можете указать заполнитель и тип клавиатуры для записи, используя несколько атрибутов Entry:
[Entry (KeyboardType=UIKeyboardType.NumberPad,Placeholder="Your Zip code")]
public string ZipCode;
Переключатели включения и выключения
Используйте логическое значение для хранения параметра включения и выключения. По умолчанию вы получаете переключатель Вкл./выкл., но вы можете изменить это поведение так, чтобы вместо этого отображались флажки с помощью атрибута [Checkbox]:
Примеры:
bool OnOffSwitch;
[Checkbox]
bool ReadyToRun;
Значения с плавающей точкой
При использовании float в источнике появится ползунок на экране. Диапазонами значений можно управлять с помощью атрибута [Диапазон (низкий,высокий)]. В противном случае значение по умолчанию — изменить значение от 0 до 1.
Примеры:
float brightness;
[Range (0, 10), Caption ("Grade")]
float studentGrade;
Изменение даты
Используйте объект DateTime в классе для представления средства выбора даты.
По умолчанию будет предоставлен редактор даты и времени. Если вы хотите изменить только дату, установите атрибут [Date], если вы хотите изменить только время, установите атрибут [Time]:
Примеры:
[Date]
DateTime birthday;
[Time]
DateTime alarm;
[Caption ("Meeting Time")]
DateTime meetingTime;
Значение перечисления
Monotouch.Dialogs автоматически преобразует перечисление в переключатель. Просто укажите перечисление в файле:
Примеры:
enum SeatPreference { Window, Aisle, MiddleSeat }
[Caption ("Seat Preference")]
SeatPreference seat;
Изображения
Переменные с типом UIImage будут отображать изображение в виде эскиза и вызывать средство выбора изображений при нажатии.
Примеры:
UIImage ProfilePicture;
Игнорирование некоторых полей
Если вы хотите игнорировать определенное поле, просто примените к нему атрибут [Skip].
Примеры:
[Skip] Guid UniquId;
Вложенные диалоги
Чтобы создать вложенные диалоги, просто используйте вложенный класс, связыватель отражения создаст необходимые биты навигации на основе модели контейнера.
Значение для вложенного диалога не должно иметь значение NULL.
Примеры:
class MainSettings {
string Subject;
string RoomName;
TimeRange Time;
}
class TimeRange {
[Time] DateTime Start;
[Time] DateTime End;
}
Для инициализации:
new MainSettings () {
Subject = "Review designs",
RoomName = "Conference Room II",
Time = new TimeRange {
Start = DateTime.Now,
End = DateTime.Now
}
}
IEnumerable в качестве источника радиосвязи
Вы можете использовать любой тип, реализующий IEnumerable, включая универсальные шаблоны (реализующие IEnumerable), в качестве источника значений для создания селектора "один из многих", аналогичного переключателю, который вы получаете из перечисления.
Для этого вам потребуется значение типа int с атрибутом [RadioSelection], заданным для хранения значения, которое будет выбрано при запуске, а также для хранения нового значения по завершении.
Например:
class MainSettings {
[RadioSelection ("Themes")]
public int CurrentTheme;
public IList<string> Themes;
}
Отображаемое значение — это значение, отображаемое путем вызова Метода ToString() для значения, возвращаемого IEnumerable.
Создание диалогового окна из объекта
После создания класса с соответствующими атрибутами вы создадите контекст привязки следующим образом:
BindingContext context;
public void Setup ()
{
// Create the binder.
context = new BindingContext (this, data, "Settings");
// Create our UI
// Pass our UI (context.Root) and request animation (true)
var viewController = new DialogViewController (context.Root, true);
navigation.PushViewController (viewController, true);
}
Это приведет к отображению информации. Чтобы получить значения после редактирования, необходимо вызвать контекст. Выборка (). Это можно сделать из предпочитаемого обработчика, и на этом этапе можно также вызвать контекст. Dispose(), чтобы помочь сборке мусора в освобождении любых больших ресурсов, которые он мог хранить.
Конструкторы
BindingContext(Object, Object, String) |
Создает контекст привязки с указанными параметрами. |
Поля
Root |
Созданный Элемент RootElement, который можно передать в DialogViewController. |
Методы
Dispose() | |
Dispose(Boolean) | |
Fetch() |
Извлекает данные, которые были изменены пользователем, и сохраняет их обратно в исходный объект, переданный в BindingContext. |