WPF绑定功能常用属性介绍
1.Mode 绑定中数据流的方向(enum BindingMode)
目标属性指的是控件的属性
(1)TwoWay
更改源属性或目标属性时,会自动更新另一方。适用于可编辑窗体 例:TextBox
(2)OneWay
更改源属性时会自动更新目标属性。适用于隐形只读窗体 例:Label
可避免 System.Windows.Data.BindingMode.TwoWay 绑定模式的系统开销
(3)OneTime
在应用程序启动或数据上下文更改时,更新绑定目标
如果你在适合使用当前状态的快照或数据实际为静态数据的位置使用数据,则此类型的绑定适合。 如果你想使用源属性中的某个值来初始化目标属性,且提前不知道数据上下文,则此类型的绑定也有用。
这是实质上是 System.Windows.Data.BindingMode.OneWay 绑定的一种简化形式,它在源值不更改的情况下提供更好的性能。
(4)OneWayToSource
目标属性更改时,会自动更新源属性
(5)Default
使用绑定目标的默认 System.Windows.Data.Binding.Mode 值。 每个依赖属性的默认值都不同。 通常,用户可编辑的控件属性(如文本框和复选框的控件属性)默认为双向绑定,而其他大多数属性默认为单向绑定。确定依赖属性绑定在默认情况下是单向还是双向的编程方法是:使用 System.Windows.DependencyProperty.GetMetadata(System.Type)获取属性的属性元数据,然后检查 System.Windows.FrameworkPropertyMetadata.BindsTwoWayByDefault属性的布尔值。
2.UpdateSourceTrigger 绑定源更新的计时(enum UpdateSourceTrigger)
(1)Default
绑定目标属性的默认 System.Windows.Data.UpdateSourceTrigger 值。 大多数依赖属性的默认值为 System.Windows.Data.UpdateSourceTrigger.PropertyChanged,而System.Windows.Controls.TextBox.Text 属性的默认值为 System.Windows.Data.UpdateSourceTrigger.LostFocus。
(2)PropertyChanged
每当绑定目标属性发生更改时,都会更新绑定源
(3)LostFocus
每当绑定目标元素失去焦点时,都会更新绑定源
(4)Explicit
仅在调用 System.Windows.Data.BindingExpression.UpdateSource 方法时更新绑定源
BindingExpression be = tbName.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
3.Converter 获取或设置要使用的转换器
WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)
4.ElementName 要绑定的元素的名称
Content="{Binding ElementName=lblTitle, Path=Content}"
5.Path 获取或设置绑定源属性的路径
Content="{Binding ElementName=lblTitle, Path=Content}"
可以省略Path
Content="{Binding Content, ElementName=lblTitle}"
6.IsAsync 是否应异步获取和设置值
这篇文章的例子很好: https://www.cnblogs.com/Aimeast/archive/2011/02/24/1963359.html
处理大批量的数据时,由于耗时操作,会造成界面的假死,这时需要进行异步操作。一般我们起线程就好了,而绑定属性,只要设置了IsAsync就可以了。
(1)异步设置值
属性:
private int status = 0;
public int Status
{
get { return status; }
set { Thread.Sleep(10000); status = value; RaisePropertyChanged("Status"); }
}
xaml:
<TextBox Text="{Binding Status,IsAsync=True}" HorizontalAlignment="Left" Height="23" Margin="243,208,0,0" VerticalAlignment="Top" Width="120"/>
<Label Content="{Binding Status}" HorizontalAlignment="Left" Height="23" Margin="243,256,0,0" VerticalAlignment="Top" Width="120"/>
效果:
没使用IsAsync=True时,界面会假死10s,然后刷新label内容;使用后,界面不会假死,然后10s后刷新label内容
(2)异步获取值
属性:
private int status = 0;
public int Status
{
get { Thread.Sleep(10000); return status; }
set { status = value; RaisePropertyChanged("Status"); }
}
xaml:
<Label Content="{Binding Status,IsAsync=True}" HorizontalAlignment="Left" Height="23" Margin="243,256,0,0" VerticalAlignment="Top" Width="120"/>
效果:
因为 “控件绑定绑定的属性,值获取后控件才开始显示刷新”,所以设置异步之前Status的get完成后,Label的才显示刷新,会假死10s。
WPF绑定功能常用属性介绍的更多相关文章
- WPF布局控件常用属性介绍
WPF布局控件常用属性介绍 其它 | 作者:慧都控件网 | 2011-04-06 13:41:57| 阅读 0次 有用(0) 评论(0) 概述:WPF布局控件都是派生自System.Windows ...
- 【转】【WPF】WPF绑定用法
一.简介 为了后面行文顺利,在进入正文之前,我们首先对本文所涉及到的绑定知识进行简单地介绍.该节包含绑定的基本组成以及构建方式. WPF中的绑定完成了绑定源和绑定目标的联动.一个绑定常常由四部分组成: ...
- WPF快速入门系列(4)——深入解析WPF绑定
一.引言 WPF绑定使得原本需要多行代码实现的功能,现在只需要简单的XAML代码就可以完成之前多行后台代码实现的功能.WPF绑定可以理解为一种关系,该关系告诉WPF从一个源对象提取一些信息,并将这些信 ...
- WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化
WPF中的常用布局 一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...
- Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块
这是一篇系列博文,我将使用Abp.Zero搭建一套集成手机号免密登录验证与号码绑定功能的用户系统: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 Abp.Zero 手机号 ...
- RelativeLayout常用属性介绍
RelativeLayout常用属性介绍 转自: http://www.douban.com/note/97496783/ 下面介绍一下RelativeLayout用到的一些重要的属性: 第一类:属性 ...
- WPF中的常用布局
一 写在开头1.1 写在开头评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好. 1.2 本文内容本文主要内容为WPF中的常用布局,大部分内容转载至https://blog.csdn.net ...
- Atiit 常见功能 常用功能与模块的最快速解决方案
Atiit 常见功能 常用功能与模块的最快速解决方案 一.大力使用第三方API接口 一.导出excel jquery.table2excel 二.Form表单验证,使用h5验证属性 验证发生在form ...
- WPF绑定的ListBox获取ListBoxItem及GoToState应用
现公司项目中需要制作一个扇形菜单,菜单项是用ListBox重写Style实现的,其数据是绑定的.菜单的每一项都有Normal,MouseOver和Selected三种状态,这三种状态当然可以通过鼠标移 ...
随机推荐
- 解决jdk卸载出错2502、2503
之前装的jdk1.6,后来软件要求用1.8,就卸载了1.6,卸载的时候出现了这个问题.后来又有其他软件用1.8出错,就又要装1.6,脑壳疼.网上建议先卸载1.8再装低版本,结果卸载1.8,又出现错误2 ...
- JDK+Jmeter 环境搭建
1.下载JDK安装包,默认安装next即可 2. 3. 4. 5. 6.变量名:JAVA_HOME 变量的值为你安装JDK的目录 我这里是放在C盘 7. 8.添加新的变量值: %JAVA_HOME%\ ...
- talend工具整理文件并出力文件到Excel当中
问题描述: 每天都会生成一定的txt文件,txt文件当中含有复数个个人的信息,把每个个人信息都抽出来之后放到Excel文件的一览里面. 解决思路: 1.txt文件里面的信息有多件,每一件生成一个临时的 ...
- 携程Apollo统一配置中心的搭建和使用
原文链接:https://blog.csdn.net/luhong327/article/details/81453001 一.Apollo配置中心介绍 1.What is Apollo 1.1 Ap ...
- 乐字节Java变量与数据结构之二:Java常量与变量
大家好,小乐又来给大家讲述Java基础知识.上次说了乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符,这次将接着往下说,谈谈Java常量与变量. 1.常量 1).定义 在程序执行的过 ...
- python学习-44 程序的解耦 (不是特别懂的,回头在复习)
import os def file_handler(backend_data,res=None,type='fetch'): # 查询功能 if type == 'fetch': with open ...
- ndarray笔记
Numpy的介绍 1. Ndarray:N-dimensional array, N维数组 2. 一种由相同类型的元素组成的多维数组,元素数量是事先指定好的 例:建立Ndarray多维数组 nd ...
- WPF入门(4)——资源
引用<深入浅出WPF>对资源的解读: 每个WPF的界面元素都具有一个名为Resources的属性,这个属性继承自FrameworkElement类,其类型为ResourceDictiona ...
- Linux下PHP7.2扩展
前言 由于公司某项目需要连接oracle数据库,该项目使用的开发语言为PHP,故需要对PHP进行扩展 环境说明 服务器:Centos7 PHP:7.2, 源码安装;安装路径:/usr/local/xx ...
- NodeJs 的Module.export 和 export
NodeJs 的Module.export 和 export 是一样的. 但是Module.export ={....} 可以起效,.export ={....} 是失效的. 这里的export ...