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.如果我将课程移到同一个项目,我再也没有问题.我在这里看到了其他问题,并尝试了以下方法:
以上都没有奏效.关于我哪里出错的任何建议?
编辑
我的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)
所以我的命名空间等正确.
尝试这个:
xmlns:databind="clr-namespace:GuiParts.DataBinding.Validators;assembly=DataBinding"
<Binding.ValidationRules>
<databind:FileExistsRule />
</Binding.ValidationRules>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7454 次 |
| 最近记录: |