“必需”DataAnnotation抛出unHandled异常

时间:2011-08-29 07:52:17

标签: silverlight validation data-annotations

我正在尝试在Silverlight 4中使用DataAnnotations来验证用户输入。

在这个例子中,一切都按预期进行:

<TextBox x:Name="txtName" Margin="15,0,0,0" MinWidth="200" Height="Auto" Text="{Binding Name, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"/>

使用此ViewModel代码:

#region Name
private string name;

[Display(Name="Pet Name", Description="Here goes the pet's name")]
[StringLength(50, ErrorMessage="Name must be 3 - 50 characters", MinimumLength=3)]
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                Validator.ValidateProperty(value, new ValidationContext(this, null, null) { MemberName = "Name" });

                this.name= value;

                this.RaisePropertyChanged("Name");
                this.AceptarCommand.OnCanExecuteChanged();
            }
        }
        #endregion

当我尝试添加“必需”DataAnnotation时出现问题:

区域名称

private string name;

[Display(Name="Pet Name", Description="Here goes the pet's name")]
[Required(ErrorMessage="You must write a name")]
[StringLength(50, ErrorMessage="Name must be 3 - 50 characters", MinimumLength=3)]
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                Validator.ValidateProperty(value, new ValidationContext(this, null, null) { MemberName = "Name" });

                this.name= value;

                this.RaisePropertyChanged("Name");
                this.AceptarCommand.OnCanExecuteChanged();
            }
        }
        #endregion

当ValidateProperty执行时,它会在第一次加载页面时抛出未处理的异常(它没有默认值)。

我做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:0)

最后我发现了问题。

这是因为我在DataContext构造函数中初始化文本框绑定值(Name)所以它在构造所有内容之前抛出了异常(可能是visualtree ......)。

所以你必须在施工后这样做。