使用 ValidationRule 类进行 WPF 验证

103 浏览
0 Comments

使用 ValidationRule 类进行 WPF 验证

我正在尝试使用“ValidationRule”类对文本进行必填字段的验证。我对该类的实现如下:

using System.Windows.Controls;
using System.Globalization;
public class RequiredField : ValidationRule
{
    private String _errorMessage = String.Empty;
    public string ErrorMessage
    {
        get { return _errorMessage; }
        set { _errorMessage = value; }
    }
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        var str = value as string;
        if (String.IsNullOrEmpty(str))
        {
            return new ValidationResult(true, this.ErrorMessage);
        }
        return new ValidationResult(true, null);
    }
}

在我的XAML中,我有以下实现:

      
        
            
                
                    
                
            
        
    

为了显示错误消息,我在app.xaml中有以下错误模板样式:

 

代码编译和运行都很正常。即使调试器也会调用验证规则方法。 但问题是错误消息没有显示出来。

我使用以下代码附加了模型:

 ApplicationUsersUIContract ss = new ApplicationUsersUIContract();
                         this.DataContext = ss;

我对WPF的概念很陌生。我在这里错过了什么?任何帮助都将不胜感激。

admin 更改状态以发布 2023年5月25日
0
0 Comments

除了即使在验证失败的情况下您仍将isValid传递为true,一切都很完美——

    if (String.IsNullOrEmpty(str))
    {
        return new ValidationResult(true, this.ErrorMessage); <--- HERE        
    }

相反,应该是false——

return new ValidationResult(false, this.ErrorMessage);

0