我在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如下所示
我收到的错误消息如下。
发生XAMLParseException,无法加载文件或程序集XXX.ValidationRule,Public KeyToken = null或其依赖项之一。系统找不到指定的文件。
我已将该引用提供给ValidationRule程序集,并且intellisense正在我的XAML中读取ValidationRule,还有其他我需要做的吗?
答案 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”的验证程序集的引用? 如果没有,这可以解释这个问题。