在.cs类文件中从xaml引用到公共类

时间:2010-03-26 23:27:05

标签: c# xaml reference

我的WPF项目文件RssInfo.cs中有公共类

public class DoubleRangeRule : ValidationRule
{
    public double Min { get; set; }
    public double Max { get; set; }

    public override System.Windows.Controls.ValidationResult Validate(object value,
                                               CultureInfo cultureInfo)
    {
       ...
    }
}

从WPF窗口类的我的XAML代码中我得到了这个DoubleRangeRule类..

<!-- reference to my project, all my files are in the WpfCzytanieRSS namespace -->
xmlns:valRule="clr-namespace:WpfCzytanieRSS;assembly=WpfCzytanieRSS" 

<TextBox Validation.ErrorTemplate="{StaticResource TextBoxErrorTemplate}"
         Name="tbTitle">
  <TextBox.Text>
    <Binding Path="Nazwa" UpdateSourceTrigger="PropertyChanged">
      <Binding.ValidationRules>
        <valRule:DoubleRangeRule Min="0.5" Max="10"/> //error place
      </Binding.ValidationRules>
    </Binding>
  </TextBox.Text>
</TextBox>

我得到两个错误:

错误1

XML命名空间'clr-namespace中不存在标记'DoubleRangeRule':WpfCzytanieRSS; assembly = WpfCzytanieRSS'。

错误2

找不到类型'valRule:DoubleRangeRule'。验证您是否缺少程序集引用,并且已构建所有引用的程序集。

请帮助上课 DoubleRangeRule

1 个答案:

答案 0 :(得分:2)

这个XAML文件与DoubleRangeRule在同一个项目中吗?如果是这样,您需要从xmlns声明中删除assembly=部分。将其更改为:

xmlns:valRule="clr-namespace:WpfCzytanieRSS"

如果没有,则检查声明验证规则类的名称空间。例如,如果已将其放在项目子文件夹中,则默认情况下Visual Studio会将文件夹名称添加为嵌套名称空间,例如namespace WpfCzytanieRSS.ValidationRules