我无法从其他程序集中引用 xaml 中的类。
在同一个解决方案中,我有两个项目。一种称为 Controls(保存用户控件),另一种称为 DataBinding(保存转换器/验证规则)。在控件中,我尝试在 xaml 中引用验证规则:
<Binding.ValidationRules>
<databind:Validators.FileExistsRule />
</Binding.ValidationRules>
我的项目引用了包含我的类的项目。我在我的 Control.xaml 的顶部添加了这个声明:
xmlns:databind="clr-namespace:GuiParts.DataBinding;assembly=DataBinding"
但是,当我编译时,我得到一个错误:
The tag 'Validators.FileExistsRule' does not exist in XML namespace 'clr-namespace:GuiParts.DataBinding;assembly=DataBinding'.
该类肯定存在,我可以在后面的代码中毫无问题地调用它,但不能通过 xaml。如果我将班级转移到同一个项目,我再次没有问题。我在这里看到了其他问题,并尝试了以下方法:
- 清理和重建所有相关项目
- 确保所有项目都针对相同版本的 .Net(4.0,完整配置文件)
- 从命名空间定义的末尾删除“程序集”定义。
以上都没有奏效。关于我哪里出错的任何建议?
编辑
我的 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;
}
}
}
我可以在后面的代码中调用以下代码而不会出现任何错误:
new GuiParts.DataBinding.Validators.FileExistsRule();
所以我得到了我的命名空间等正确的。