Xamarin的Telerik UI?下载30天免费试用

Xamarin的数据表格。iOS:起步

这个快速入门教程演示了如何添加TKDataForm你的沙玛林。iOS应用程序。

设置TKDataForm

有两种方法你可以使用-或者添加一个TKDataForm实例到一个现有的UIViewController或使用我们的预定义TKDataFormViewController

无论您选择哪种方式,首先需要将Telerik.Xamarin.iOS.dll引用到Xamarin中。iOS项目。

添加TKDataForm实例

打开你的ui文件,并添加对TelerikUI名称空间:

使用TelerikUI;

您应该创建一个将被显示和编辑的业务对象TKDataForm.让我们创建一个类PersonalInfo

public class PersonalInfo: NSObject{[导出("Server")] public string服务器{get;}[导出("Details")] public string详细信息{get;}[导出(“帐户”)]公共字符串帐户{获取;}[导出(“安全”)]public bool安全{获取;}[导出("Password")] public string密码{get;} [Export("EncryptionLevel")] public int EncryptionLevel {get;}[导出("SendAllTraffic")] public bool SendAllTraffic {get;}[导出("InfoProtocol")] public int InfoProtocol{get;} public PersonalInfo(){此。InfoProtocol = 0;这一点。Details = ""; this.Server = ""; this.Secure = false; this.Password = ""; this.EncryptionLevel = 0; this.Account = ""; this.SendAllTraffic = true; } }

TKDataForm中创建的对象ViewDidLoadUIViewController的方法:

public override void ViewDidLoad () {base。ViewDidLoad ();//在加载视图后执行任何额外的设置,通常是从一个nib。var dataForm = new TKDataForm(this.View.Bounds) {WeakDataSource = new TKDataFormEntityDataSource(new PersonalInfo())};this.View.AddSubview (dataForm);}

结果如下:

利用TKDataFormViewController

另一种选择是利用TKDataFormViewController-它继承自ui并包含一个预定义的TKDataForm实例。

下面的例子也是一样PersonalInfo类用作数据表格的来源。

公共部分类MyViewController: TKDataFormViewController{公共MyViewController(IntPtr句柄):base(句柄){}公共覆盖无效ViewDidLoad() {base.ViewDidLoad();//在加载视图后执行任何额外的设置,通常是从一个nib。this.DataForm.WeakDataSource = new TKDataFormEntityDataSource(new PersonalInfo());}}

自定义编辑器

TKDataForm根据每个属性的类型选择默认编辑器。属性可以更改默认编辑器TKDataFormEntityDataSourceHelper类,并将其设置为数据表单的DataSource。TKDataFormEntityDataSourceHelper为源对象的每个属性提供对每个数据表单实体的访问,以便您可以修改其编辑器、提供预定义值等。

此外,如果希望自定义编辑器,则需要采用TKDataFormDelegate并覆盖其UpdateEditor方法。然后你只需要将这样创建的委托设置为委托TKDataForm实例的属性。

查看下面的示例TKDataFormEntityDataSourceHelper而且TKDataFormDelegate

public override void ViewDidLoad () {base。ViewDidLoad ();//在加载视图后执行任何额外的设置,通常是从一个nib。var dataSource = new TKDataFormEntityDataSourceHelper(new PersonalInfo());数据源(“密码”)。EditorClass = new Class(typeof(TKDataFormPasswordEditor));数据源(“InfoProtocol”)。ValuesProvider = NSArray。FromStrings(新字符串[]{"L2TP", "PPTP", "IPSec"});数据源(“EncryptionLevel”)。ValuesProvider = NSArray。FromStrings(新字符串[]{"FIPS兼容","高","客户端兼容","低"});数据源。AddGroup(" ", new string[] { "InfoProtocol" }); dataSource.AddGroup(" ", new string[] { "Details", "Server", "Account", "Secure", "Password", "EncryptionLevel", "SendAllTraffic" }); var dataForm = new TKDataForm(this.View.Bounds) { BackgroundColor = new UIColor(0.937f, 0.937f, 0.960f, 1.0f), GroupSpacing = 20, Delegate = new MydDataFormDelegate(), WeakDataSource = dataSource.NativeObject }; this.View.AddSubview(dataForm); }

其中MydDataFormDelegate定义如下:

类MydDataFormDelegate: TKDataFormDelegate{公共覆盖无效UpdateEditor(TKDataForm dataForm, TKDataFormEditor编辑器,TKEntityProperty属性){TKGridLayoutCellDefinition feedbackDef = editor. gridlayout . definitionforview (editor. feedbacklabel);editor.GridLayout。SetHeight (0, feedbackDef.Row.Int32Value);如果财产。Name == "InfoProtocol") {editor.Style.TextLabelDisplayMode = TKDataFormEditorTextLabelDisplayMode.Hidden;TKGridLayoutCellDefinition textLabelDef = editor.GridLayout.DefinitionForView(editor.TextLabel);editor.GridLayout。SetWidth (0, textLabelDef.Column.Int32Value);} if(编辑器。IsKindOfClass(new Class(typeof(TKDataFormTextFieldEditor)) && !(property. name . equals ("Password"))){属性。HintText = "Required"; } } }

下图显示了应用代码片段后的结果:

在本文中
Baidu
map