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使用转换器(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。

转载于:https://www.cnblogs.com/yaosj/p/11233822.html

WPF绑定功能常用属性介绍相关推荐

  1. wpf绑定treeview 带查找_如何查找,修复和避免C#.NET中内存泄漏的8个最佳实践

    本文来源:https://michaelscodingspot.com/find-fix-and-avoid-memory-leaks-in-c-net-8-best-practices/ 从事大型企 ...

  2. Android | 教你如何开发一键银行卡绑定功能

    目录 前言 银行卡识别的应用场景 如何使用华为银行卡识别服务 集成银行卡识别服务关键流程 开发实战 1 开发准备 1.1 在项目级gradle里添加华为maven仓 1.2 在应用级的build.gr ...

  3. Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块

    这是一篇系列博文,我将使用Abp.Zero搭建一套集成手机号免密登录验证与号码绑定功能的用户系统: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 Abp.Zero 手机号 ...

  4. WPF绘制简单常用的Path

    原文:WPF绘制简单常用的Path 写代码出身的我们经常需要使用一些简单 但是不是规则图形的Path 但限于美工功底有限 不知道怎么去画 下面我告诉大家一些简单的小技巧 用代码来画Path 个人还是比 ...

  5. WPF 绑定以基础数据类型为集合的无字段名的数据源

    WPF 绑定以基础数据类型为集合的无字段名的数据源 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-21 我们在控件的数据绑定 ...

  6. 解决 WPF 绑定集合后数据变动界面却不更新的问题(使用 ObservableCollection)

    解决 WPF 绑定集合后数据变动界面却不更新的问题 独立观察员 2020 年 9 月 9 日 在 .NET Core 3.1 的 WPF 程序中打算用 ListBox 绑定显示一个集合(满足需求即可, ...

  7. 解决 WPF 绑定集合后数据变动界面却不更新的问题

    解决 WPF 绑定集合后数据变动界面却不更新的问题 独立观察员 2020 年 9 月 9 日 在 .NET Core 3.1 的 WPF 程序中打算用 ListBox 绑定显示一个集合(满足需求即可, ...

  8. WPF 绑定StaticResource到控件的方法

    WPF 绑定StaticResource到控件的方法 原文:WPF 绑定StaticResource到控件的方法 资源文件内的属性能否直接通过绑定应用到控件?答案是肯定的. 比如,我们要直接把下面的& ...

  9. WEB综合案例 黑马面面 day04 用户与角色绑定功能 登录用户菜单控制和权限效验

    WEB综合案例 day04 用户与角色绑定功能 登录用户菜单控制和权限效验 1. 用户与角色 思路: 根据用户去找角色的信息,然后需要用到两个表的查询,在前端页面显示信息的时候用for:each通过遍 ...

最新文章

  1. Operation Queues并发编程
  2. oracle数据库 名词,Oracle数据库名词解释
  3. Java之通过Collections.synchronizedMap创建线程安全的HashMap
  4. js使用hover事件做一个“个人中心”的浮动层
  5. 推陈出新:网友解锁 source 命令新的姿势,血的教训!已准备跑路
  6. 产品属性对风险定价有什么影响?
  7. php 快速排序函数,PHP实现快速排序算法的三种方法
  8. sql主键可以有多个_干货 | 新手请速戳!30个精选SQL面试问题Qamp;A集锦
  9. 如果有一个想法,你如何表述?
  10. android安全攻防实践_Android安全攻防实战 PDF 下载
  11. 【C++】常用算数生成算法
  12. 计算机内存die,从内存时序的角度告诉你 三星B-DIE为何成为高端所用
  13. linux下木马程序病原体的制作和运行
  14. MAC的物理地址与IP地址查询方法
  15. Filter中chain.doFilter(req, res)的理解
  16. 设置html整个页面只读,如何将整个HTML表单“只读”?
  17. 个人微信收款回调通知
  18. 印刷方式——标识丝印工艺
  19. weChat applet 微信小程序(2) WXSS 小程序组件
  20. vb 窗体画面打不开

热门文章

  1. Android P禁止http明文传输
  2. IT求职经验总结—面试和准备策略
  3. html5播放多个mp3,HTML5 audio 如何实现播放多个MP3音频
  4. iOS:适配iPad的横屏
  5. 去耦(一)单颗去耦电容的设计
  6. ncm格式文件转换为mp3格式文件
  7. GBase 8s 存储过程解析之ITERATE
  8. 计算机考试考什么,怎么考呢?
  9. 精益数据分析笔记(Nr.13)双边市场
  10. 有“镜头感”的网页是如何实现的