从其他程序集中引用xaml中的类时出现问题。“clr-namespace ...”中不存在MC3074 - 类型
在同样的解决方案中,我有两个项目。一个名为Controls(用于保存用户控件)和一个名为DataBinding(保存转换器/验证规则)。在一个控件中,im试图在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();
所以香港专业教育学院得到了我的名字空间等正确的。
你方法可以是1行语句:'返回File.Exists((字符串)值)?新的ValidationResult(false,“文件不存在。”):new ValidationResult(true,null);' – 2012-07-17 19:41:53
有没有想到这一点? – 2013-01-08 00:30:23