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,明确指出了当前是添加验证错误还是去除验证错误。即:此事件会在验证失败和再次成功都会触发。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Golang Echo数据绑定中time.Time类型绑定失败
- 如何在Symfony的表单中添加一个未绑定字段,否则绑定到一个实体?
- js双向绑定
- 延迟静态绑定——static
- 绑定自定义事件
- angular组件双向绑定
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
iOS软件开发揭密
虞斌 / 电子工业出版社 / 2011-5-1 / 79.00元
本书以严密的体系性提供了iPhone和iPad软件开发从入门到专家的系统性知识,并提供来源于真实项目的可重用商业代码。书中的每个实例都是项目经验的提炼,深入浅出地讲解iPhone和iPad软件开发的核心技术要点,基本涵盖了iOS软件开发在真实商业项目中所需要的所有主题,并将实例介绍的技术深度和超值的实用性结合在一起,成为本书的特色。 随书附赠的光盘中包含了书中大量案例的完整工程源代码,可以让......一起来看看 《iOS软件开发揭密》 这本书的介绍吧!