Первым делом добавьте одну строку в DetailsGrid
Height элемента Window составляет не менее 300. Поместите в последнюю строку элемент управления ListBox и привяжите его свойство ItemsSource к DetailsGrid, используя Validation.Errors для Path: ItemsSource="{Binding ElementName=DetailsGrid, Path=(Validation.Errors)}">
Добавьте к ListBox
DataTemplate, а в него — элемент управления ListBox, привязанный к свойству ErrorContent. Контекстом данных для каждого элемента ListBoxItem в этом случае является объект ValidationError, так что устанавливать контекст данных не придется, а только путь. Установите путь привязки в ErrorContent:
Запустите приложение, выберите автомобиль Chevy
Pink. В окне отобразятся ошибки (рис. 28.4).Мы лишь слегка коснулись поверхности того, что можно делать при проверке достоверности и отображении сообщений об ошибках, но представленных сведений должно быть вполне достаточно для выработки вами способа разработки информативных пользовательских интерфейсов, которые улучшают восприятие.
Перемещение поддерживающего кода в базовый класс
Вероятно, вы заметили, что в настоящий момент в классе CarPartial
Создайте в папке Models
BaseEntity.cs. Добавьте в него операторы using для пространств имен System.Collections и System.ComponentModel. Пометьте класс как открытый и обеспечьте реализацию им интерфейса INotifyDataErrorInfor.using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
namespace Validations.Models
{
public class BaseEntity : INotifyDataErrorInfo
}
Переместите в новый базовый класс весь код, относящийся к INofityDataErrorInfo
CarPartial.cs. Любые закрытые методы понадобится сделать защищенными. Удалите реализацию интерфейса INotifyDataErrorInfo из класса в файле CarPartial.cs и добавьте BaseEntity в качестве базового класса:public partial class Car : BaseEntity, IDataErrorInfo
{
// Для краткости код не показан.
}
Теперь любые создаваемые классы моделей будут наследовать весь связующий код INotifyDataErrorInfo
Использование аннотаций данных в WPF
Для проверки достоверности в пользовательских интерфейсах инфраструктура WPF способна также задействовать аннотации данных. Давайте добавим несколько аннотаций данных к модели Car
Добавление аннотаций данных к модели
Откройте файл Car.cs
using для пространства имен System.ComponentModel.DataAnnotations. Добавьте к свойствам Make, Color и PetName атрибуты [Required] и [StringLength(50)]. Атрибут [Required] определяет правило проверки достоверности, которое регламентирует, что значение свойства не должно быть null (надо сказать, оно избыточно для свойства Id, т.к. свойство не относится к типу int, допускающему null). Атрибут [StringLength(50)] определяет правило проверки достоверности, которое ограничивает длину значения свойства 50 символами.Контроль ошибок проверки достоверности на основе аннотаций данных
В WPF вы должны программно контролировать наличие ошибок проверки достоверности на основе аннотаций данных. Двумя основными классами, отвечающими за проверку достоверности на основе аннотаций данных, являются ValidationContext
Validator. Класс ValidationContext предоставляет контекст для контроля за наличием ошибок проверки достоверности. Класс Validator позволяет проверять, есть ли в объекте ошибки, связанные с аннотациями данных, в ValidationContext.Откройте файл BaseEntity.cs
using:using System.ComponentModel;
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT