首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"Required“DataAnnotation引发unHandled异常

"Required“DataAnnotation引发unHandled异常
EN

Stack Overflow用户
提问于 2011-08-29 15:52:17
回答 1查看 309关注 0票数 0

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

在此示例中,一切都按预期进行:

代码语言:javascript
复制
<TextBox x:Name="txtName" Margin="15,0,0,0" MinWidth="200" Height="Auto" Text="{Binding Name, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"/>

使用下面的ViewModel代码:

代码语言:javascript
复制
#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时,问题出现了:

地域名称

代码语言:javascript
复制
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执行时,它会在第一次加载页面时抛出一个未处理的异常(它没有默认值)。

我做错了什么??

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-29 22:44:32

我终于找到了问题所在。

这是因为我在DataContext构造函数中初始化textbox绑定值(名称),所以它在一切都构造之前抛出了异常(可能是可视化树...)。

所以你必须在构建之后再做这件事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7227491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档