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三种状态,这三种状态当然可以通过鼠标移 ...
随机推荐
- 【VS开发】【miscellaneous】 Windows下配置Git
[转自]http://blog.csdn.net/exlsunshine/article/details/18939329 1.从git官网下载windows版本的git:http://git-scm ...
- 移动架构-IOC架构设计
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency Inject ...
- 最新 盛天网络java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.盛天网络等10家互联网公司的校招Offer,因为某些自身原因最终选择了盛天网络.6.7月主要是做系统复习.项目复盘.Leet ...
- Netty学习笔记(二)——netty组件及其用法
1.Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 原生NIO存在的问题 1) NIO的类库和API繁杂,使用麻烦:需要熟练掌握Selector.Se ...
- 2019春《C语言程序设计》课程设计的安排
课程设计的安排 课前准备: 要求同学们注册码云,并登陆: 要求组长加入由老师创建的一级组织:"2019春C语言": 要求组长建立二级组织,给自己的小组取个好听的名字,并邀请本组成员 ...
- GstStaticCaps的初始化
struct _GstStaticCaps { /*< public >*/ GstCaps *caps; const char *string; /*< private >* ...
- DMA存储器到存储器传输代码讲解
M to M:Flash to Sram,把内部flash的数据传输到内部SRAM(DRAM主要存放的是变量, flash 主要存放代码) M to P: SRAM to 串口,同时LED闪烁,演示D ...
- flask返回自定义的Response
from json import dumps from flask import Response from flask_api import status from protocol.errors_ ...
- 分布排序(distribution sorts)算法大串讲
ref : https://dsqiu.iteye.com/blog/1707383 本文内容框架: §1 鸽巢排序(Pigeonhole) §2 桶排序(Bucket Sort) §3 基数 ...
- py kafka
# https://github.com/confluentinc/confluent-kafka-python/blob/master/examples/consumer.py #生产者 impor ...