【问题标题】:WPF ValidationRule Binding is throwing XMLParseExceptionWPF ValidationRule 绑定正在抛出 XMLParseException
【发布时间】:2011-07-30 04:25:57
【问题描述】:

我在 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 属性,该属性在 EmptyFieldValidationRule 类中从 BaseValidationRule 继承。

ValidationRule 绑定的 XAML 如下所示

我得到的错误信息如下。

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

我已将引用提供给 ValidationRule 程序集,并且智能感知正在我的 XAML 中的 ValidationRule 中正常读取,我还需要做些什么吗?

【问题讨论】:

    标签: c# wpf visual-studio


    【解决方案1】:

    请确保您在 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 应该是该类的库名称。

    【讨论】:

      【解决方案2】:

      是否对 XAML 设置为“复制本地 = True”的项目中的验证程序集的引用? 如果不是,这将解释问题。

      【讨论】:

      • 我没有类似的东西,我将如何/在哪里指定这个?
      • 如果我理解正确,您有一个带有 XAML 文件 (X) 的程序集和另一个带有验证码 (V) 的程序集。 X 引用 V,因此查看引用的属性,您应该会看到“复制本地”属性。
      • V 组件是否依赖于其他组件?可以在 Reflector 中加载吗?
      猜你喜欢
      • 1970-01-01
      • 2011-07-22
      • 2011-09-26
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多