Xamarin.Forms 第13局:数据绑定
总目录
前言
本文介绍数据绑定:
一、绑定到元素
二、绑定到非元素
环境
1.Visual Studio 2017
2.Xamarin.Froms 4.0.0.8055-pre1
3.Android 4.4(API 19)或更高版本
4.约定:XF代表Xamarin.Forms
内容
一、绑定到元素
这里的元素是Xaml中的控件,布局,页等可见对象。
实现效果
Xaml方式
1.数据绑定是连接两个对象之间一对属性,修改某一个属性另一个属性会自动跟着更改。
2.数据绑定的两个重要概念:
- 源:数据绑定引用的对象或属性,即:数据的来源;
- 目标:数据绑定设置的对象或属性。即:数据的去向。
3.本例中,四个控件实现了元素与元素之间的绑定,涉及以下知识点:
- 基本绑定
- 绑定路径
- 字符串格式设置
- 绑定模式
4.基本绑定:在Xaml中绑定通常有两种写法:
- (1)绑定上下文方式:通过设置BindingContext绑定。例如:本例中,label1设置BindingContext为slider,然后在Text中设置Bing的Path为Value属性,实现了在Text中显示slider的Value属性的值,当slider滑块滑动时,Text值会跟随变化。
- (2)直接绑定方式:直接在可绑定的属性上进行绑定。例如:本例中,label2在Text属性中直接设置Source为slider,Path为Value,实现与label1同样的效果。
两种方式的区别:观察一下sliderTwo控件,可知,在使用绑定上下文方式时,Slider控件中其它属性需要绑定时,我们可直接写入要绑定的属性;若使用直接绑定方式,则需要在每个属性中设置Source。
本例中,Slider是绑定源,Label是绑定目标。
5.绑定路径:本例中,Binding的Path属性(其实是Binding扩展标记属性)设置为单属性。它也可以是设置到子属性(属性的属性),或设置为集合的成员,在下面绑定到非元素小节再作介绍。
6.字符串格式设置:以 StringFormat='当前值:{0:F1}'} 为例进行说明:
- 用一对单引号('')进行包裹格式化的字符串,主要是为了不与外面的双引号冲突;
- 单引号中{}外的文本及字符会原样输出;
- {0}代表占位符,代表当前绑定到的字符串;
- {0:F1},冒号后面的F1,代表保留1为小数;
- 常用的还有格式化日期用法,在下一小节展示。
7.绑定模式:指数据在源与目标之间的传输方式,有以下几种:
- Default:控件默认模式,不同控件有不同的绑定模式,但均在下面四种之内;
- TwoWay:数据在源和目标之间双向传输;
- OneWay:数据从源到目标单向传输;
- OneWayToSource:数据从目标到源单向传输;
- OneTime:只有在BindingContext更改时,数据才从源到目标单向传输。
C#方式
一、绑定到非元素
这里的非元素是指一些非可见的对象。
实现效果
实现方式
1.简单绑定:可以看到绑定的属性(即Path的值),可以是简单属性,子属性,集合索引方式。绑定到集合可以在集合绑定中看到ItemSource绑定到集合Students。
2.命令绑定:以命令的方式代替了点击事件。
3.集合绑定:将集合绑定到ListView的ItemSource。
4.属性通知:通知属性发生变化,若无属性通知,那么点击按钮时,点击次数的值不会刷新。属性通知的写法固定,类实现INotifyPropertyChanged接口,然后将属性通知的代码放入即可。
5.说明:首先将DataBindingPage页面的BindingContext设置为DataBindingPageViewModel的实例,这样,才能在页面中Binding到该实例的属性,命令和集合。
后语
下篇介绍资源样式,待续...