Отображение предупреждений похожим способом к ошибкам на управлении wpf

Я хотел бы отобразить предупреждения и ошибки при проверке бизнес-объекта и отобразить их визуально пользователю.

Например, у меня есть класс бизнес-объекта, реализовывая интерфейс как так:

interface IOrderItem : IDataErrorInfo
{
  int ProductId { get; set; }
  string ProductName { get; set; }
  decimal Price { get; set; }
  IDictionary<string, string> Warnings { get; }
}

Это связывается с UI следующим образом:

<TextBox Text="{Binding Price, ValidatesOnDataErrors=True}/>

Ошибка была бы:

  • Цена <0 => "Цена не может быть меньше чем 0"

Это работает приятно и тянет красную границу вокруг текстового поля, когда я поместил сообщение об ошибке на бизнес-объект с помощью IDataErrorInfo интерфейс.

То, что я хотел бы сделать, также определяют предупреждения, например:

  • Price <15 || Price> 30 => "Price за пределами допуска"

Эти предупреждения поместили бы оранжевую границу вокруг текстового поля и сообщили бы пользователю, что может быть проблема, но не остановить их продолжение.

Предупреждения хранятся в строковом отображении словаря PropertyName => WarningMessage похожим способом к IDataErrorInfo.

Вопрос: Что лучший способ состоит в том, чтобы пойти об этом?

  • Очевидно, мне будет нужен Стиль, который содержит оранжевую границу для текстового поля, но как я инициировал его?
  • Я действительно не хочу отдельный стиль для каждого текстового поля, поэтому как стиль может получить доступ к базовой привязке для получения имени свойства, которое это должно искать в Словаре.
10
задан Iain 21 January 2010 в 11:21
поделиться