MC3074 - "clr-namespace ..."中不存在类型

ric*_*lla 6 data-binding wpf reference

我无法从其他程序集中引用xaml中的类.

在同一个解决方案中,我有两个项目.一个名为Controls(用于保存用户控件)和一个名为DataBinding(保存转换器/验证规则).在控件中,我尝试在xaml中引用验证规则:

<Binding.ValidationRules>
   <databind:Validators.FileExistsRule />
</Binding.ValidationRules>
Run Code Online (Sandbox Code Playgroud)

我的项目引用了包含我的类的项目.我在Control.xaml的顶部添加了这个声明:

xmlns:databind="clr-namespace:GuiParts.DataBinding;assembly=DataBinding"
Run Code Online (Sandbox Code Playgroud)

但是,当我编译时,我收到一个错误:

The tag 'Validators.FileExistsRule' does not exist in XML namespace 'clr-namespace:GuiParts.DataBinding;assembly=DataBinding'.
Run Code Online (Sandbox Code Playgroud)

该类肯定存在,我可以在后面的代码中调用它没有问题,但不能通过xaml.如果我将课程移到同一个项目,我再也没有问题.我在这里看到了其他问题,并尝试了以下方法:

  1. 清理和重建所有相关项目
  2. 确保所有项目都针对相同版本的.Net(4.0,完整个人资料)
  3. 从命名空间定义的末尾删除"程序集"定义.

以上都没有奏效.关于我哪里出错的任何建议?

编辑

我的FileExists验证器:

namespace GuiParts.DataBinding.Validators
{
   /// <summary>
   /// Validates that the file with the specified name exists
   /// </summary>
   public class FileExistsRule : ValidationRule
   {
      public override ValidationResult Validate(object value, CultureInfo cultureInfo)
      {
         ValidationResult res = null;
         res = ( ! File.Exists((string)value))
                  ? new ValidationResult(false, "File does not exist")
                  : new ValidationResult(true, null);
         return res;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我可以在后面的代码中调用以下内容而不会出现任何错误:

new GuiParts.DataBinding.Validators.FileExistsRule();
Run Code Online (Sandbox Code Playgroud)

所以我的命名空间等正确.

Pet*_*sen 5

尝试这个:

xmlns:databind="clr-namespace:GuiParts.DataBinding.Validators;assembly=DataBinding"

<Binding.ValidationRules>    
    <databind:FileExistsRule />    
</Binding.ValidationRules> 
Run Code Online (Sandbox Code Playgroud)