WPF绑定语法的笔记

栏目: ASP.NET · 发布时间: 7年前

Mode, Default、OneTime、OneWay、TwoWay、OneWayToSource。Default看情况,一般是OneWay,一些用户可编辑的属性默认是TwoWay。这个主要是通过注册依赖属性时的FrameworkPropertyMetadataOptions中的BindsTwoWayByDefault决定。可以通过获取或者更改FrameworkPropertyMetadataOptions来决定默认是否双向绑定。

Path, 绑定当前源Path=.;  绑定集合当前项Path=/, 另外需要主要ItemsControl的IsSynchronizedWithCurrentItem属性,它就是同步当前控件选中项和后台数据源的当前项,这样如果有其他控件Path=/,就会实时和ItemsControl的选中项同步;

ConverterParameter,因为它只支持string, 所有如果要支持2个及以上的动态绑定来转换时, 这个时候就会用到IMultiValueConverter。

UpdateSourceTrigger,代表什么方式去触发更新绑定源。 有LostFocus、Explicit、PropertyChanged。Explicit需要C#调用BindingExpression的UpdateSource方法。

ElementName,绑定到一个x:Name的元素

ValidationRules用来验证输入是否符合自定义的规则。当出现错误时,控件指定的ErrorTemplate就会渲染出来。不过需要注意ErrorTemplate是渲染在Adorner Layer上,Page、ScrollViewer和Window类默认都有。而UserControl就没有,需要在UserControl节点上加上AdornerDecorator用来创建AdornerLayer。

StringFormat, 当格式化字符位于开始时, 比如StringFormat={0:C}这样子的话, 必须前缀加上{}, 不然显示失败。原因是不让系统误认为是标记扩展。 正确的结果就是StringFormat={}{0:C}

FallbackValue,当转换的值无效或者数据源无效时,属性值默认为DependencyProperty.UnsetValue,此时可以设置FallbackValue来给出此种异常情况的默认值。

Source,默认Binding的源是从DataContext继承过来的,但是可以通过Source指定别的源。

RelativeSource,一般用在style、template或者自身绑定中。RelativeSource 有3个静态变量:PreviousData、Self、TemplatedParent。另外还有3个成员变量:Mode,AncestorType,AncestorLevel。 其中只有Mode=FindAncestor时,后两个变量才有用。注意:ElementName\Source\RelativeSouce三者都是用来指定绑定源的,不能同时使用。

TargetNullValue,绑定的值为null时,给出的默认值。

IsAsync,一般不推荐用。 可以结合PriorityBinding以及FallbackValue来一起使用, 当异步的数据还没有显示时,显示FallbackValue,比如FallbackValue为“loading”或者默认图像, 当真实值加载完成后显示真实值。 由于IsAsync后台会开启多线程,导致CPU过高。

BindsDirectlyToSource,指示当前绑定的Path是 DataSourceProvider 对象的Data属性还是 DataSourceProvider 对象本身。 默认为false,代表绑定到 DataSourceProvider 的Data属性。一般 DataSourceProvider 是数据类型的话不用更改,当是方法时需要更改;或者是需要对 DataSourceProvider 有全面控制。

BindingGroupName, 一般用法是在父元素中定义BindingGroup的ValidationRules,然后子元素设置绑定的BindingGroupName,如果子元素的绑定会触发整个父元素的验证,达到整体校验的效果。 Bin定Group的ValidationRules必须在调用CommitEdit方法之后才会验证, 因此实际场景中既可以实时(TextChangedevent)触发,也可以最后点击按钮一起提交触发。

ValidatesOnDataErrors, 指的是binding使用默认的DataErrorValidationRule,并且数据源实现了IDataErrorInfo接口。DataErrorValidationRule会查找IDataErrorInfo的Error属性或者索引器遍历,如果不为空则验证失败。其实质还是使用ValidationRule的一套。 默认为false,即不使用它验证输入。

ValidatesOnExceptions,指的是binding使用默认的ExceptionValidationRule, 如果数据源更新过程中出现exception则会触发。和DataErrorValidationRule类似。

NotifyOnSourceUpdated,当数据源被更新时,检查此标记位,如果为true,则触发SourceUpdated事件

NotifyOnTargetUpdated,当目标被更新时,检查此标记位,如果为true,则触发TargetUpdated事件

NotifyOnValidationError , 当有ValidationRule验证失败时, 检查此标记位,如果为true, 则触发Validation.Error事件,需要注意的是此事件的ValidationErrorEventArgs参数有成员Action,明确指出了当前是添加验证错误还是去除验证错误。即:此事件会在验证失败和再次成功都会触发。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Four

The Four

Scott Galloway / Portfolio / 2017-10-3 / USD 28.00

NEW YORK TIMES BESTSELLER USA TODAY BESTSELLER Amazon, Apple, Facebook, and Google are the four most influential companies on the planet. Just about everyone thinks they know how they got there.......一起来看看 《The Four》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器