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");
}
}