Я хочу отображать предупреждения и ошибки при проверке бизнес-объекта и визуально отображать их пользователю.
Например, у меня есть класс бизнес-объекта, реализующий такой интерфейс:
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 || Ценa > 30 = > "Цена за пределами допуска"
Эти предупреждения помещают оранжевую рамку вокруг текстового поля и сообщают пользователю, что может быть проблема, но не останавливать их.
Предупреждения сохраняются в строковом словаре, сопоставляющем PropertyName = > WarningMessage аналогично IDataErrorInfo
.
Вопрос: Каков наилучший способ сделать это?
- Очевидно, мне понадобится стиль, который содержит оранжевую рамку для текстового поля, но как его вызвать?
- Мне не нужен отдельный стиль для каждого текстового поля, так как стиль может получить доступ к базовому привязке, чтобы получить имя свойства, которое он должен искать в словаре.