【发布时间】:2010-01-21 10:50:18
【问题描述】:
我想在验证业务对象时显示警告和错误,并将它们直观地显示给用户。
例如,我有一个业务对象类实现这样的接口:
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"
当我使用IDataErrorInfo 接口将错误消息放在业务对象上时,这很好用并在文本框周围绘制了一个红色边框。
我想做的也是指定警告,例如:
- 价格 30 => “价格超出公差范围”
这些警告会在文本框周围放置一个橙色边框,并通知用户可能存在问题,但不会阻止他们继续进行。
警告以类似于IDataErrorInfo 的方式存储在字符串字典映射 PropertyName => WarningMessage 中。
问题:解决此问题的最佳方法是什么?
- 显然,我需要一个包含橙色边框的样式,但如何触发它?
- 我真的不希望每个文本框都有单独的样式,那么样式如何访问底层绑定以获取它应该在字典中查找的属性名称。
【问题讨论】:
-
我遇到了一个非常相似的问题 (stackoverflow.com/questions/3813365/…),所以我在这里发布一个赏金。