定义:
是将我们获取到的数据和UI上的控件绑定起来利用数据的变化来更新界面所看到的内容
把绑定分为五步
1.绑定目标 2.绑定属性 3.绑定模式 4.绑定数据源 5.关联资源
1.绑定目标
绑定目标很好理解,其实就是你要操作绑定的控件。例如:Button,TextBox
2.绑定属性(依赖项属性)
3.绑定模式
TwoWay 无论是目标属性还是源属性,只要发生了更改,TwoWay 就会更新目标属性或源属性。
OneWay 仅当源属性发生更改时更新目标属性。
OneTime 仅当应用程序启动时或 DataContext 进行更改时更新目标属性。
OneWayToSource 在目标属性更改时更新源属性。
Default:模式根据实际情况来定,如果是可编辑的就是TwoWay,只读的就是OneWay.
4.绑定数据源
一般来说可以是单个变量(int , double,string)、也可以是一个数据集(List)。根据需求和场景去定义。
- 指定方式
Source、ElementName、DataContext、RelativeSource
5.关联资源 DataContext
在每一个窗体中,都有一个DataContext ,它是一个object类型主要用来存储绑定资源。
控件绑定
件绑定,即在同一个界面中不同控件之间的数据同步处理,最常见的就是滑动条与一个文本框之间的绑定。在控件绑定中,需要指定绑定类的elementname属性值,即当前属性绑定到哪一个控件的属性上。示例如下:
在控件绑定中有一个比较特殊的存在——模板绑定-templatebinding,它与binding并不在一个继承结构上。templatebinding是用在控件模板定义中的,用于绑定模板对应控件中的属性,示例如下:
<textbox x:name=
"templatebinding"
>
<textbox.template>
<controltemplate targettype=
"textbox"
>
<textblock text=
"{templatebinding text}"
/>
</controltemplate>
</textbox.template>
</textbox>
绑定到非元素上
上面的代码中,使用的绑定方式是根据元素的方式: ElementName=xxx, 如需绑定到一个非元素的对象, 则有一下几属性:
- Source : 指向一个数据源, 示例, TextBox使用绑定的方式用Source指向一个静态资源ABC:
- RelativeSource : 使用一个名为RelativeSource的对象来根据不同的模式查找源对象
-
示例, 使用RelativeSource的FindAncestor模式, 查找父元素为StackPanel的Width值
- DataContext: 从当前的元素树向上查找到第一个非空的DataContext属性为源对象。
示例, 该示例用后台代码创建一个只包含Name的类, Test, 通过绑定窗口的DataContext上下文:
后台代码绑定简单文本与列表
创建一个PageModel类, 定一个ClassName为班级名称, 和一个Students学生列表, 后台代码:
窗口代码