WPF绑定语法的笔记

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

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,明确指出了当前是添加验证错误还是去除验证错误。即:此事件会在验证失败和再次成功都会触发。


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

查看所有标签

猜你喜欢:

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

Large-Scale Inference

Large-Scale Inference

Bradley Efron / Cambridge University Press / 2010-8-5 / GBP 48.00

We live in a new age for statistical inference, where modern scientific technology such as microarrays and fMRI machines routinely produce thousands and sometimes millions of parallel data sets, each ......一起来看看 《Large-Scale Inference》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换