Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
<ListBox ItemsSource="{Binding Path=ErrorContent}"/> </DataTemplate></ListBox.ItemTemplate>Запустите приложение, выберите автомобиль
ChevyPink
Мы лишь слегка коснулись поверхности того, что можно делать при проверке достоверности и отображении сообщений об ошибках, но представленных сведений должно быть вполне достаточно для выработки вами способа разработки информативных пользовательских интерфейсов, которые улучшают восприятие.
Перемещение поддерживающего кода в базовый класс
Вероятно, вы заметили, что в настоящий момент в классе
CarPartialСоздайте в папке
ModelsBaseEntity.csusingSystem.CollectionsSystem.ComponentModelINotifyDataErrorInforusing System;using System.Collections;using System.Collections.Generic;using System.ComponentModel;using System.Linq;namespace Validations.Models{ public class BaseEntity : INotifyDataErrorInfo}Переместите в новый базовый класс весь код, относящийся к
INofityDataErrorInfoCarPartial.csINotifyDataErrorInfoCarPartial.csBaseEntitypublic partial class Car : BaseEntity, IDataErrorInfo{ // Для краткости код не показан.}Теперь любые создаваемые классы моделей будут наследовать весь связующий код
INotifyDataErrorInfoИспользование аннотаций данных в WPF
Для проверки достоверности в пользовательских интерфейсах инфраструктура WPF способна также задействовать аннотации данных. Давайте добавим несколько аннотаций данных к модели
CarДобавление аннотаций данных к модели
Откройте файл
Car.csusingSystem.ComponentModel.DataAnnotationsMakeColorPetName[Required][StringLength(50)][Required]nullIdintnull[StringLength(50)]Контроль ошибок проверки достоверности на основе аннотаций данных
В WPF вы должны программно контролировать наличие ошибок проверки достоверности на основе аннотаций данных. Двумя основными классами, отвечающими за проверку достоверности на основе аннотаций данных, являются
ValidationContextValidatorValidationContextValidatorValidationContextОткройте файл
BaseEntity.csusingusing System.ComponentModel;using System.ComponentModel.DataAnnotations;Далее создайте новый метод по имени
GetErrorsFromAnnotations()Тprotectedprotected string[] GetErrorsFromAnnotations<T>( string propertyName, T value){}Внутри метода
GetErrorsFromAnnotations()List<ValidationResult>ValidationContextValidate.TryValidateProperty()booltruefalseList<ValidationResult>