WPF ValidationRule绑定抛出XMLParseException

时间:2011-04-05 17:32:23

标签: c# wpf visual-studio

我在WPF中有以下ValidationRule类

public class EmptyFieldValidationRule: BaseValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        var fieldValue = (string)value;
        if (fieldValue.Trim().Length == 0)
        {
            return new ValidationResult(false, "Field Is Empty");
        }
        else
        {
            return new ValidationResult(true, null);
        }
    }
}

注意 - BaseValidationRule 扩展了普通的 ValidationRule 类。

这实际上只是一个测试验证课,因为我想开始更轻松。

我试图将它绑定到我的XAML中的文本框中,并且它正在BaseValidationRule类中读取,它甚至在Intellisense中给我它,但是当我去运行该程序并且它击中了那部分时应用程序,它告诉我一个XMLParseException。

我在XAML中定义了一个ErrorMessage属性,该属性在BaseValidationRule的EmptyFieldValidationRule类中继承。

ValidationRule Binding的XAML如下所示 enter image description here

我收到的错误消息如下。

发生XAMLParseException,无法加载文件或程序集XXX.ValidationRule,Public KeyToken = null或其依赖项之一。系统找不到指定的文件。

我已将该引用提供给ValidationRule程序集,并且intellisense正在我的XAML中读取ValidationRule,还有其他我需要做的吗?

2 个答案:

答案 0 :(得分:2)

请确保您的XAML文档中定义了XML命名空间,如下所示:

xmlns:validation="clr-namespace:Some.Assembly.Name.Some.Namespace.Containing.Validations;assembly=Some.Assembly.Name"

其中 Some.Assembly.Name.Some.Namespace.Containing.Validations 应该是包含EmptyFieldValidationRule类的名称空间全名,而 Some.Assembly.Name 应该是该类的库名。

答案 1 :(得分:0)

是否在项目中对XAML设置为“Copy Local = True”的验证程序集的引用? 如果没有,这可以解释这个问题。