Wpf 数据绑定简介、实例1
简介:
1.WPF绑定使用的源属性必须是依赖项属性,这是因为依赖项属性具有内置的更改通知支持,元素绑定表达式使用了Xaml扩展标记,
WPF绑定一个控件是使用Binding.ElementName,
绑定非控件对象时使用Source,RelativeSource,DataContext属性(WPF特有,而非XAML),只能绑定对象的公有字段.
下边是部分Binding 属性名,完整列表参考 :http://msdn.microsoft.com/zh-cn/library/vstudio/ms750413.aspx
① Source:数据提供者
② RelativeSource:根据当前对象为基础,自动查找源并绑定
③ DataContext:如果未使用Source和RelativeSource,WPF就从当前控件开始在控件树种向上查找,并使用第一个非空的DataContext属性,可以在更高层次容器对象上设置DataContext,如下代码 Text 绑定到 Source属性,但未设置Text的绑定对象,会向上查找DataContext绑定的对象的Source属性
实例:
- <Grid>
- <StackPanel DataContext="{x:Static SystemFonts.IconFontFamily}">
- <TextBox Margin="5" Text="{Binding Path=Source,Mode=OneWay}">
- </TextBox>
- </StackPanel>
- <ComboBox x:Name="lstColors" Margin="3,43,189,196">
- <ComboBoxItem Content="Red" HorizontalAlignment="Left" Width="224"/>
- <ComboBoxItem Content="Green" HorizontalAlignment="Left" Width="224"/>
- <ComboBoxItem Content="Blue" HorizontalAlignment="Left" Width="224"/>
- </ComboBox>
- <TextBlock Margin="3,117,3,3" x:Name="lblSampleText"
- Text="{Binding ElementName=lstColors,Path=SelectedItem.Content}"
- Background="{Binding ElementName=lstColors,Path=SelectedItem.Content}" >
- </TextBlock>
- </Grid>
实例2,使用代码实现绑定:
- //使用代码创建绑定
- Binding binding = new Binding();
- binding.Source = System.Diagnostics.Process.GetCurrentProcess();
- binding.Path = new PropertyPath("ProcessName");
- binding.Mode = BindingMode.OneWay;
- txtOne.SetBinding(TextBlock.TextProperty,binding);
- //Path中使用"."标识当前数据源
- Binding binding2 = new Binding();
- binding2.Source = SystemColors.ActiveBorderBrush;
- binding2.Path = new PropertyPath(".");
- txtOne.SetBinding(TextBlock.BackgroundProperty, binding2);
2.BindingMode的枚举值有:
① OneWay
② TwoWay
③ OneTime:根据源端属性值设置目标属性值,之后的改变会被忽略,除非调用BindingExpression.UpdateTarge方法
④ OneWayToSource:与OneWay类似,但方向相反,用于目标属性是非依赖项属性的情况
⑤ Default:默认值,根据目标属性确定绑定类型.依赖项属性都由一个元数据 FrameworkPropertyMetadata.BindsTwoWayByDefault用于标识oneway绑定还是twoway绑定
3.从目标到绑定源端数据更新时(binding mode为twoway或者onewaytosource),更新行为(什么时机更新)由Binding.UpdateSourceTrigger枚举属性控制,UpdateSourceTrigger的值有:
① PropertyChanged:目标属性发生变化时立即更新
② LostFocus:目标属性发生变化并且目标丢失焦点时更新源
③ Explicit:除非调用BindingExpression.UpdateSource()方法,否则无法更新
④ Default:根据目标属性的元数据(FrameworkPropertMetadata.DefaulUpdateSourceTrigger)确定更新行为,大多数属性默认行为是PropertyChanged
4.WPF中派生自ItemsControl的类都能显示列表,能够支持集合数据绑定的元素包括ListBox,ComboBox,ListView和DataGrid,Menu,Treeview,ItemsControl中有三个重要属性:
① ItemsSource: 指向一个集合,结合必须支持IEnumerable接口,该集合包含将在列表中显示的所有元素,但基本的IEnumerable接口只支持只读绑定,要使修改能直接反应到绑定的控件上需要使用ObservablCollection类
② DisplayMemberPath:确定用于显示的 对象的属性,如果未设置 则会显示对象的ToString()方法返回的值
③ ItemTemplates:接受一个数据模板,用于为每个项创建可视化外观
Wpf 数据绑定简介、实例1的更多相关文章
- WPF数据绑定Binding(二)
WPF数据绑定Binding(二) 1.UI控件直接的数据绑定 UI对象间的绑定,也是最基本的形式,通常是将源对象Source的某个属性值绑定 (拷贝) 到目标对象Destination的某个属性上. ...
- Windows 8实例教程系列 - 数据绑定基础实例
原文:Windows 8实例教程系列 - 数据绑定基础实例 数据绑定是WPF,Silverlight以及Windows Phone应用开发中最为常用的开发技术,在基于XAML的Windows Stor ...
- 剖析WPF数据绑定机制
引言 WPF框架采取的是MVVM模式,也就是数据驱动UI,UI控件(Controls)被严格地限制在表示层内,不会参与业务逻辑的处理,只是通过数据绑定(Data Binding)简单忠实地表达与之绑定 ...
- 微软原文翻译:适用于.Net Core的WPF数据绑定概述
原文链接,大部分是机器翻译,仅做了小部分修改.英.中文对照,看不懂的看英文. Data binding overview in WPF 2019/09/19 Data binding in Windo ...
- C#WPF数据绑定模板化操作四步走
前言:WPF数据绑定对于WPF应用程序来说尤为重要,本文将讲述使用MVVM模式进行数据绑定的四步走用法: 具体实例代码如下: 以下代码仅供参考,如有问题请在评论区留言,谢谢 1 第一步:声明一个类用来 ...
- WPF 数据绑定Binding
什么是数据绑定? Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简单而一致的方法来显示数据以及与数据交互. 通过数据绑定,您可以对两个不同对象 ...
- WPF——数据绑定(一)什么是数据绑定
注意:本人初学WPF,文中可能有表达或者技术性问题,欢迎指正!谢谢! 一:什么是数据绑定? “Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简 ...
- Windows 8实例教程系列 - 数据绑定高级实例
原文:Windows 8实例教程系列 - 数据绑定高级实例 上篇Windows 8实例教程系列 - 数据绑定基础实例中,介绍Windows 8应用开发数据绑定基础,其中包括一些简单的数据绑定控件的使用 ...
- WPF 10天修炼 第十天- WPF数据绑定
WPF数据绑定 数据绑定到元素属性是将源对象指定为一个WPF元素,并且源属性是一个依赖属性,依赖属性内置了变更通知.当改变源对象依赖属性值之后,绑定目标可以立即得到更新,开发人员不需要手动编写响应事件 ...
随机推荐
- Python 日期格式化 及 schwartzian排序
__author__ = 'root' import datetime import time import copy # 12/Dec/2012:23:59:50 # 12/Sep/2012:23: ...
- 模拟I2C从机程序
;Slave.asm SCL BIT P1. SDA BIT P1. ;---------------------------- ORG RESET: SETB SCL SETB SDA CALL I ...
- Java中的移位操作符
记住所有的移动位数,针对的都是补码来讲的,所以要先将十进制整数转换成补码后,然后再来进行移位操作 移位操作 还要注意类型的约束条件,例如int,移动范围是0-31位,所以看补码只能看最后五位,这才是有 ...
- Oracle 搜集统计信息的存储过程
DECLARE CURSOR STALE_TABLE IS SELECT OWNER, SEGMENT_NAME, CASE WHEN SIZE_GB < 0.5 THEN 30 WHEN SI ...
- java数组排序之冒泡排序
上一篇文章说了,选择排序. 选择排序的原理就是,先确定第一个格子当中的数字是最小的,之后确定第二个格子是其他数字中最小的依次类推. 这一节当中我们来看下冒泡排序: 思路: 1.首先拿第一个数字跟第二个 ...
- bzoj2588
一开始一看树上的操作,就无脑写了树链剖分+主席树 然后果断T了,因为树链剖分+主席树必然带来两个log的复杂度 而且树链剖分复杂度还比较大…… 后来发现其实没必要,在这道题,我们可以直接利用主席树维护 ...
- Javascript面向对象编程(二):构造函数的继承 by 阮一峰
今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = & ...
- 【图论】【宽搜】【染色】NCPC 2014 A Ades
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1787 题目大意: N个点M条无向边(N,M<=200000),一个节点只能有一个 ...
- 动态规划——J 括号配对问题
J - 括号匹配 Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- [C++关键字] 内置类型
bool, char, short, char16_t (C++11), int, char32_t (C++11), float, long, double,在64位机器上测试各种类型的大小,代码如 ...