«Обязательный» DataAnnotation создает необработанное исключение - PullRequest
0 голосов
/ 29 августа 2011

Я пытаюсь использовать DataAnnotations в Silverlight 4 для проверки введенных пользователем данных.

В этом примере все идет так, как ожидается:

<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 голосов
/ 29 августа 2011

Наконец я нашел проблему.

Это было вызвано тем, что я инициализировал привязанное к текстовому полю значение (Name) в конструкторе DataContext, поэтому он выдал исключение до того, как все было построено (возможно, visualtree ...).

Так что вы должны сделать это ПОСЛЕ строительства.

...