WPF ValidationRule

简介:

             ValidationRule提供检查输入的有效性。可用于数据校验,错误提示。 例如检查TextBox控件输入的数值。

 

介绍:

ValidationResult如果值无效,则返回的 ErrorContent 属性和 IsValid 属性将 ValidationResult 分别设置为相应的错误消息false。
ValidatesOnTargetUpdated 获取或设置一个值,该值指示当 Binding 的目标更新时是否运行验证规则。
 NotifyOnValidationError 获取或设置一个值,该值指示是否对绑定对象引发 Error 附加事件。

 

使用:

  1. ValidatesOnTargetUpdated 设置为true,当Slider控件的数值无效时,绑定到Slider的TextBox控件会有红框提示。
  2. NotifyOnValidationError设置为true,当TextBox收到的数据无效时,引发 Error 附加事件,可加入ToolTip。
    public class RangeValidationRule:ValidationRule
    {
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            double d = 0;
            if (double.TryParse(value.ToString(), out d))
            {
                if (d >= 0 && d <= 100)
                {
                    return new ValidationResult(true, null);
                }
            }
            return new ValidationResult(false,"Validation Failed");
        }

    }
        private void TextBox_Error(object sender, ValidationErrorEventArgs e)
        {
            if (Validation.GetErrors(sender as TextBox).Count > 0)
            {
                (sender as TextBox).ToolTip = Validation.GetErrors(sender as TextBox)[0].ErrorContent.ToString();
            }
        }

 

    <Grid>
        <StackPanel>
            <Slider x:Name="slider" Maximum="1000"></Slider>

            <TextBox Validation.Error="TextBox_Error">
                <TextBox.Text>
                    <Binding ElementName="slider" Path="Value" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True">
                        <Binding.ValidationRules>
                            <local:RangeValidationRule ValidatesOnTargetUpdated="True"/>
                        </Binding.ValidationRules>
                    </Binding>
                </TextBox.Text>
            </TextBox>
        </StackPanel>
    </Grid>

 

效果:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值