数据验证方法补充ValidationRule

引言

除了使用CommunityToolkit.Mvvm工具包的ObservableValidator,.Net 抽象类VlidationRule也可以让我们实现自定义验证方法,但验证很受限,只能对当前值进行判断,无法获取对象的上下文。

ValidationRule

功能:验证值是否在0~100之间。

cs 复制代码
public class MyValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        double myValue = 0;
        if (double.TryParse(value.ToString(), out myValue))
        {
            if (myValue >= 0 && myValue <= 100)
                {
                    return new ValidationResult(true, null);
                }
        }
        return new ValidationResult(false, "Input should between 0 and 100");
    }
}

使用如下:

ValidationRules下面可以添加多个验证条件。

XML 复制代码
<TextBox Height="50" Margin="5,30,5,240" Name="tbx1" Validation.Error="tbx1_Error">
    <TextBox.Text>
          <Binding ElementName="slider" Path="Value" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True">
                <Binding.ValidationRules>
                      <hc:RegexRule Type = "Number"/>
                      <local:RangeValidationRule ValidatesOnTargetUpdated="True"/>
                </Binding.ValidationRules>
           </Binding>
    </TextBox.Text>
</TextBox>
相关推荐
老骥伏枥~22 分钟前
VB.NET 中的单例模式
单例模式·.net
云草桑4 小时前
.net AI开发04 第八章 引入RAG知识库与文档管理核心能力及事件总线
数据库·人工智能·microsoft·c#·asp.net·.net·rag
Eiceblue4 小时前
.NET框架下Windows、Linux、Mac环境C#打印PDF全指南
linux·windows·.net
老骥伏枥~8 小时前
VB.NET 中的委托(Delegate)
.net
云草桑11 小时前
.net AI开发05 第九章 新增 RAG 文档处理后台服务 RagWorker 及核心流程
人工智能·ai·.net·rag·qdrant
缺点内向12 小时前
Word 自动化处理:如何用 C# 让指定段落“隐身”?
开发语言·c#·自动化·word·.net
mudtools12 小时前
飞书多应用开发:如何实现企业多应用的“系统集成引擎“
c#·.net·飞书
步步为营DotNet1 天前
深度剖析.NET中IHostedService:后台服务管理的关键组件
服务器·网络·.net
一叶星殇1 天前
.NET WebAPI:用 Nginx 还是 IIS 更好
运维·nginx·.net
fs哆哆1 天前
VB.NET 与 VBA 中数组索引起始值的区别
算法·.net