以与wpf控件上的错误类似的方式显示警告

Iai*_*ain 10 c# wpf

我想在验证业务对象时显示警告和错误,并将这些信息以可视方式显示给用户.

例如,我有一个实现如下界面的业务对象类:

interface IOrderItem : IDataErrorInfo
{
  int ProductId { get; set; }
  string ProductName { get; set; }
  decimal Price { get; set; }
  IDictionary<string, string> Warnings { get; }
}
Run Code Online (Sandbox Code Playgroud)

这与用户界面绑定如下:

<TextBox Text="{Binding Price, ValidatesOnDataErrors=True}/>
Run Code Online (Sandbox Code Playgroud)

错误是:

  • 价格<0 =>"价格不能低于0"

当我使用IDataErrorInfo界面将错误消息放在业务对象上时,这很好地工作并在文本框周围绘制一个红色边框.

我想做的还是指定警告,例如:

  • 价格<15 || 价格> 30 =>"价格超出容忍度"

这些警告会在文本框周围放置橙色边框,并告知用户可能存在问题但不会阻止它们继续运行.

警告以类似的方式存储在映射PropertyName => WarningMessage的字符串字典中IDataErrorInfo.

问题:最好的方法是什么?

  • 显然我需要一个包含文本框橙色边框的Style,但是如何触发呢?
  • 我真的不希望每个文本框都有单独的样式,所以样式如何访问底层绑定以获取它应该在Dictionary中查找的属性名称.