Поделиться через


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.

Применяется к