【WPF】数据验证中ValidationStep的含义

  1. 什么是数据验证?
    WPF中的Binding能够使数据在数据源和目标之间流通,在数据流通时,能够对数据进行一些处理,处理方式是数据转换和数据验证;
  2. 数据验证实例
    所有的自定义验证规则都必须继承自ValidationRule抽象类,通过实现其Validate()方法的返回值ValidationResult表示验证结果。示例如下:
<TextBox Grid.Row="1">
    <TextBox.Text>
        <Binding Path="Number" UpdateSourceTrigger="PropertyChanged" 
        	Converter="{StaticResource Converter}" NotifyOnValidationError="True">
            <Binding.ValidationRules>
                <validationRules:NumberValidationRule ValidatesOnTargetUpdated="True" 
                	ValidationStep="CommittedValue"/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

其中,ValidatesOnTargetUpdated属性表示验证的方向,为false时,只能验证从目标到源的方向,为true时,同时也会验证从源到目标的验证;
ValidationStep属性确定了验证的时机,是一个枚举值:

  1. RawProposedValue(0),默认值,即先验证,后转换,再赋值给源,如果验证失败,不会继续执行转换和赋值
  2. ConvertedProposedValue(1),先执行Converter,再执行Validate,后赋值到源,如果验证失败,则不执行赋值
  3. UpdatedValue(2),先执行Converter,再执行赋值,最后执行Validate,即无论Validate是否成功,源数据都会更新
  4. CommittedValue(3),先执行Converter,再执行赋值,最后执行Validate,即无论Validate是否成功,源数据都会更新
    注意,在3、4中,自定义验证方法中的Value是System.Windows.Data.BindingExpression,而不再是目标值,这时应该先从Binding表达式中找到目标值再进行Validate。

参考:WPF中的数据验证
参考2
参考3

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

woniudaidai

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值