IDataErrorInfo не работает

Я хочу, чтобы граница текстового поля была красной, а другое текстовое поле под ней сообщало об ошибке.

C#

 class BandsVM : ObservableObject, IPage, IDataErrorInfo
    {

        [Required(ErrorMessage = "De naam is verplicht")]
        [RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$", ErrorMessage = "Er zijn geen speciale tekens toegelaten")]
        [StringLength(50, MinimumLength = 1, ErrorMessage = "De naam moet tussen de 1 en 50 karakters bevatten ")]
        private string insertName;
        public string InsertName
        {
            get { return insertName;  }
            set { insertName = value; }
        }

XAML:

<TextBox Validation.ErrorTemplate="{StaticResource ErrorTemplate}" Text="{Binding InsertName, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource TextboxError}"/>

1 ответ

Поскольку вы наследуете от ObservableObject, который, как я предполагаю, реализует INotifyPropertyChanged

Свойство InsertName должно вызывать обработчик события PropertyChanged, чтобы уведомить механизм привязки wpf об оценке изменения свойства. Затем будет вызван ваш индекс this[], который IDataErrorInfo использует для оценки ошибок валидации.

Измените свою собственность на это:

public string InsertName
{
    get { return insertName;  }
    set { 
        if (value != insertname)
        {
            insertName = value; 
        }

        OnPropertyChanged(() => InsertName);
        // or OnPropertyChanged("InsertName");
    }
}
Другие вопросы по тегам