Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
Комбинирование IDataErrorInfo С INotifyDataErrorInfo для проверки достоверности
В предыдущем разделе было показано, что реализацию интерфейса
IDataErrorInfo
set
PropertyChanged
IDataErrorInfo
INotifyDataErrorInfo
INotifyDataErrorInfo
set
IDataErrorInfo
Цель применения
IDataErrorInfo
INotifyDataErrorInfo
PropertyChanged
IDataErrorInfo
string.Empty
CheckMakeAndColor()
public string this[string columnName]
{
get
{
ClearErrors(columnName);
switch (columnName)
{
case nameof(Id):
break;
case nameof(Make):
CheckMakeAndColor();
if (Make == "ModelT")
{
AddError(nameof(Make), "Too Old");
hasError = true;
}
break;
case nameof(Color):
CheckMakeAndColor();
break;
case nameof(PetName):
break;
}
return string.Empty;
}
}
internal bool CheckMakeAndColor()
{
if (Make == "Chevy" && Color == "Pink")
{
AddError(nameof(Make), $"{Make}'s don't come in {Color}");
AddError(nameof(Color),
$"{Make}'s don't come in {Color}");
return true;
}
return false;
}
Запустите приложение, выберите автомобиль
Chevy
Pink

Это еще одно преимущество применения интерфейса
INotifyDataErrorInfo
Отображение всех ошибок
Свойство
Errors
Validation
ValidationError
ValidationError
ErrorContent
ListBox
ListBox
Первым делом добавьте одну строку в
DetailsGrid
Height
Window
300
ListBox
ItemsSource
DetailsGrid
Validation.Errors
Path
<ListBox Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="2"
ItemsSource="{Binding ElementName=DetailsGrid, Path=(Validation.Errors)}">
</ListBox>
Добавьте к
ListBox
DataTemplate
ListBox
ErrorContent
ListBoxItem
ValidationError
ErrorContent
<ListBox.ItemTemplate>
<DataTemplate>