BindingContext 类

定义

用于将结构和类映射到 MonoTouch.Dialog 中的用户界面元素的帮助程序类。

public class BindingContext : IDisposable
type BindingContext = class
    interface IDisposable
继承
BindingContext
实现

注解

基于反射的对话构造通过创建 MonoTouch.Dialog.BindingContext 类的对象使用,该方法采用三个参数: (1) 将用于解析 Tap 目标的对象, (2) 将编辑和 (3) 标题的对象。

用户界面是根据所编辑对象的类型构造的。 该类型可以包含以下类型的对象:字符串、布尔值、枚举、浮点数、整数、 DateTimeT T:MonoTouch.UIKit.UIImage ,这些对象可以使用驱动 UI 生成的少数属性进一步修饰这些对象。

下面显示了一个非常简单的对话框,其中包含一个复选框:

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] 属性,在这种情况下,字符串的值应包含要在嵌入的 UIWebView 中加载的 URL。

[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 值

在源中使用 float 将在屏幕上提供一个滑块。 可以使用 [range (low,high) ] 属性控制值的范围。 否则,默认编辑介于 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) 的泛型 (作为值源来创建一对多选择器,类似于从枚举获取的类似于单选的选择。

若要使用此功能,需要一个具有 [RadioSelection] 属性的 int 值,用于保存启动时将选择的值,并在完成后保留新值。

例如:

       class MainSettings {
    [RadioSelection ("Themes")]
    public int CurrentTheme;
    public IList<string> Themes;
}

呈现的值是通过对 IEnumerable 返回的值调用 ToString () 所呈现的值。

从对象创建对话框

使用适当的属性创建类后,可以创建绑定上下文,如下所示:

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);
}

这将呈现信息。 若要在编辑后提取回值,需要调用 context。提取 () 。 可以从喜欢的处理程序执行此操作,此时还可以调用上下文。Dispose () 可帮助 GC 释放它可能持有的任何大型资源。

构造函数

BindingContext(Object, Object, String)

创建具有指定参数的绑定上下文。

字段

Root

可以传递给 DialogViewController 的生成的 RootElement。

方法

Dispose()
Dispose(Boolean)
Fetch()

检索用户编辑的数据,并将其存储回传递给 BindingContext 的原始对象。

适用于