一个好老好老的老程序员了。
全部博文(915)
分类: Android平台
2017-10-06 21:09:32
数据绑定是一个神奇的功能,完全解耦UI,从支持的数据模型,数据移动来回你需要提供管道。但是,你在Xamarin.Forms中使用了大部分的绑定功能吗?在我们以前的介绍数据绑定和先进的数据结合柱的基础上,我会告诉你一些我们你应该使用的最强大的功能。
在编译XAML绑定
编译更快。这也意味着你在编译的时候得到的数据类型验证。第一个要求是要确保您已经启用XAML编译。真的很简单。添加这个组件标签以外的应用程序的命名空间。
using Xamarin.Forms.Xaml; ... [assembly: XamlCompilation (XamlCompilationOptions.Compile)] namespace ContosoAir { ... }
然后,从编译绑定中获益,你需要 你的Xaml中指定x:DataType,通常在您绑定的孩子的最高级别或包装元素中。一个好的规则是保证在BindingContext同一级别的地方设置X:DataType。下面是一个示例页面,显示一个列表的处理。它使用了MVVM模式,所以当前页面的 BindingContext是一个叫做MyDeals的ObservableCollection的视图模型。
namespace ContosoAir.Clients.Models { public class Deal { public int Id { get; set; } public string CityName { get { return ToName; } } public string CityImage { get { return ToName; } } public double Price { get; set; } public string FromName { get; set; } public string FromCode { get; set; } public string DepartTime { get; set; } public string ArrivalTime { get; set; } public string Hours { get; set; } public string ToName { get; set; } public string ToCode { get; set; } public int Stops { get; set; } } }
模型Deal是基础,并没有实现INotifyPropertyChanged.。以下你看到的集合,绑定到ListView 并且将 x:DataType设置到DataTemplate上。
... ... ...
XAMLC会生成访问属性的代码,并连接(在这种情况下) 到PropertyChanged。
注意xmlns参考支持而不是CLR命名空间的使用时,在相同的程序集中。
这个是 DealControl,在前面的代码显示,它只是一个简单的绑定引用。
... ...
你可以重新指定数据类型在你的视图层次结构中的任何一点。
OneWayToSource
当你希望你的绑定像羽毛一样轻的时候,只需要确保你的源在用户做出改变时被更新,请使用OneWayToSource模式。
OneWayToSource 在API文档中的定义如下:
表明结合应该只更改传播目标(的bindableobject)源(通常是视图模型)。这是主要用于只读bindableproperty值。
这是有用的当你输入字段,只和你想要的值反映在你的视图模型。
因为源没有问题的属性更改事件,这是非常有效的。另举一个例子,看看这个示例项目显示绑定控件之间的一道。
StringFormat
通过利用StringFormat绑定你很多内联灵活设置内容格式。下面是一些快速例子:
最新版的Xamarin.Forms,,2.4.0,,XAML数据绑定提供了最佳性能的日期。更新nugets你所有的项目今天试试这些小贴士。
记得去看看我们以前的文章和数据绑定,和我们优秀的文件指南: