BindingContext 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于将结构和类映射到 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 的原始对象。 |