一、绑定
主要包含元素绑定和非元素绑定两种:
1、元素绑定,是绑定的最简单形式,源对象是WPF的元素,并且源对象的属性是依赖项属性。
根据我们之前的知识 ,依赖项属性具有内置的更改通知支持。所以当我们的源对象中改变依赖项属性
的值时,会立即更新目标对象中的绑定属性。
2、非元素类型绑定
(1) Source属性:绑定具体的数据对象。
(2) RelativeSource 属性:设置该属性 可以根据当前目标对象的相对关系指向源目标。
(3) DataContext 属性:如果想将一个对象绑定到一个由多个元素组成的视图块或者复合元素中,用
DataContext 会更好开发和维护。
二、绑定的各种使用场景
数据绑定有普通的控件绑定应用:比如 下拉框、单选框、复选框、普通文本框 、日期框等;
复杂的绑定有数据列表绑定,用户控件信息绑定等,比如 ListBox,DataGrid,UserControl绑定等。
三、双向数据绑定
表达的效果:就是在界面的操作对数据模型的修改能实时反映到数据;而数据的变更能实时展
现到界面。即视图数据模型(ViewModel)和视图(View)之间的双向绑定和触发。
1、View中文本框绑定内容如下:
{Binding UserInfo.UserName,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay},
注意两个属性,一个是UpdateSourceTrigger,一个是Mode属性。
(1)UpdateSourceTrigger的作用是,当做何种改变的时候通知数据源我们做了改变。
Default: 默认值(默认为LostFocuse)。
Explicit: 当应用程序调用 UpdateSource 方法时生效。
LostFocus: 失去焦点的时候触发。
PropertyChanged: 数据属性改变的时候触发。
(2)还有一个属性就是Mode,他有五个参数:
OneWay:源发生变化,数据就会从源流向目标。
OneTime:绑定会将数据从源发送到目标;但是,仅当启动了应用程序或 DataContext
发生更改时才会如此操作,因此,它不会侦听源中的更改通知。
OneWayToSource:绑定会将数据从目标发送到源。
TwoWay:绑定会将源数据发送到目标,但如果目标属性的值发生变化,则会将它们发回给源。
Default:绑定的模式根据实际情况来定,如果是可编辑的就是TwoWay,只读的就是OneWay。
绑定
到索引属性 除了
绑定
到嵌套属性以外,也可以
绑定
到索引属性,即可以是整数索引也可是字符串索引。索引选择语法与C#类似-简单地在集合属性名后附加一个方括号作为索引号。例如,Person对象有一个Address属性返回了一个Address对象集合,就可以用如下代码
绑定
到第一个Address对象: <TextBoxDataContext=”{StaticResourcepersonR...
本文记录的是使用
MVVM
Light
进行数据
绑定
的内容,大致分为属性
绑定
和事件
绑定
。通过一个记录点击按钮点击次数的案例来记录
MVVM
Light
绑定
数据的过程。
文章目录系列文章目录前言一、Model目录二、属性
绑定
2.1、 修改MainWindow.cs2.2、 MainViewModel.cs2.3、运行程序三、事件
绑定
3.1、修改3.2、修改MainWindow.cs总结
一、Model目录
在项目目录
中
创建Model目
主要包含元素
绑定
和非元素
绑定
两种。
1、元素
绑定
,是
绑定
的最简单形式,源对象是
WPF
的元素,并且源对象的属性是依赖项属性。
根据我们之前的知识 ,依赖项属性具有内置的更改通知支持。所以当我们的源对象
中
改变依赖项属性
的值时,会立即更新目标对象
中
的
绑定
属性。
以上篇的例子来重写,我们不用额外定义全局公开的属性来支持数据的显示。
<TextBlock Text="{Binding ElementName=WelcomeText,Path=Text,StringFormat=
<Window.DataContext>
<Binding Path="Main" Source="{StaticResource Locator}"/>
</Window.DataContext>
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
主要包含元素
绑定
和非元素
绑定
两种。
1、元素
绑定
,是
绑定
的最简单形式,源对象是
WPF
的元素,并且源对象的属性是依赖项属性。
根据我们之前的知识 ,依赖项属性具有内置的更改通知支持。所以当我们的源对象
中
改变依赖项属性的值时,会立即更新目标对象
中
的
绑定
属性。
以上篇的例子来重写,我们不用额外定义全局公开的属性来支持数据的显示。
1 <StackPanel ...