Xamarin.Forms 第13局:数据绑定

96
dotNET之家 Excellent
0.8 2019.01.17 06:09 字数 1107

总目录


前言

本文介绍数据绑定:
一、绑定到元素
二、绑定到非元素

环境

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到该实例的属性,命令和集合。

后语

下篇介绍资源样式,待续...


总目录

学海无涯 - Xamarin.Forms
Web note ad 1