Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
Показанный далее интерфейс
IDataErrorInfoErrorErrorpublic interface IDataErrorInfo{ string this[string columnName] { get; } string Error { get; }}Вскоре вы добавите частичный класс
CarCar.csModelsCarPartial.csCarpartialIDataErrorInfoIDataErrorInfopublic partial class Car : IDataErrorInfo{ public string this[string columnName] => string.Empty; public string Error { get;}}Чтобы привязанный элемент управления мог работать с интерфейсом
IDataErrorInfoValidatesOnDataErrorsMake<TextBox Grid.Column="1" Grid.Row="1" Text="{Binding Path=Make, <b>ValidatesOnDataErrors=True</b>}" />После внесения изменений в конструкции привязки индексатор вызывается на модели каждый раз, когда возникает событие
PropertyChangedcolumnNamestring.Emptystring.EmptyHasErrorValidationtrueErrorTemplateДобавьте простую логику проверки достоверности к индексатору в файле
CorePartial.cs• если
MakeModelT"Too Old"• если
MakeChevyColorPink$" {Make}'s don't come in {Color}"Начните с добавления оператора
switchcasenameofswitchstring.EmptycasecaseMakeModelTstring.EmptycaseColorpublic 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 RiderFordModelTKitChevyPinkColorFord