Я хотел бы отображать предупреждения и ошибки при проверке бизнес-объекта и отображать их визуально для пользователя.
Например, у меня есть класс бизнес-объектов, реализующий такой интерфейс:
interface IOrderItem : IDataErrorInfo
{
int ProductId { get; set; }
string ProductName { get; set; }
decimal Price { get; set; }
IDictionary<string, string> Warnings { get; }
}
Это связано с пользовательским интерфейсом следующим образом:
<TextBox Text="{Binding Price, ValidatesOnDataErrors=True}/>
Ошибка будет:
- Цена <0 => "Цена не может быть меньше 0"
Это хорошо работает и рисует красную рамку вокруг текстового поля, когда я помещаю сообщение об ошибке в бизнес-объект с использованием интерфейса IDataErrorInfo
.
Я хотел бы также указать предупреждения, например:
- Цена <15 || Цена> 30 => «Цена за пределами допуска»
Эти предупреждения помещают оранжевую рамку вокруг текстового поля и информируют пользователя о том, что могут быть проблемы, но не мешают им продолжить.
Предупреждения хранятся в строковом словаре, отображающем PropertyName => WarningMessage аналогично IDataErrorInfo
.
Вопрос: Как лучше всего это сделать?
- Очевидно, мне понадобится стиль, содержащий оранжевую рамку для текстового поля, но как мне его вызвать?
- Мне не нужен отдельный стиль для каждого текстового поля, поэтому как стиль может получить доступ к базовой привязке, чтобы получить имя свойства, которое он должен искать в Словаре.