Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
Показанный далее интерфейс
IDataErrorInfo
Error
Error
public interface IDataErrorInfo
{
string this[string columnName] { get; }
string Error { get; }
}
Вскоре вы добавите частичный класс
Car
Car.cs
Models
CarPartial.cs
Car
partial
IDataErrorInfo
IDataErrorInfo
public partial class Car : IDataErrorInfo
{
public string this[string columnName] => string.Empty;
public string Error { get;}
}
Чтобы привязанный элемент управления мог работать с интерфейсом
IDataErrorInfo
ValidatesOnDataErrors
Make
<TextBox Grid.Column="1" Grid.Row="1"
Text="{Binding Path=Make, <b>ValidatesOnDataErrors=True</b>}" />
После внесения изменений в конструкции привязки индексатор вызывается на модели каждый раз, когда возникает событие
PropertyChanged
columnName
string.Empty
string.Empty
HasError
Validation
true
ErrorTemplate
Добавьте простую логику проверки достоверности к индексатору в файле
CorePartial.cs
• если
Make
ModelT
"Too Old"
• если
Make
Chevy
Color
Pink
$" {Make}'s don't come in {Color}"
Начните с добавления оператора
switch
case
nameof
switch
string.Empty
case
case
Make
ModelT
string.Empty
case
Color
public string this[string columnName]
{
get
{
switch (columnName)
{
case nameof(Id):
break;
case nameof(Make):
return Make == "ModelT"
? "Too Old"
: CheckMakeAndColor();
case nameof(Color):
return CheckMakeAndColor();
case nameof(PetName):
break;
}
return string.Empty;
}
}
internal string CheckMakeAndColor()
{
if (Make == "Chevy" && Color == "Pink")
{
return $"{Make}'s don't come in {Color}";
}
return string.Empty;
}
Запустите приложение, выберите автомобиль
Red Rider
Ford
ModelT
Kit
Chevy
Pink
Color
Ford