我想在验证业务对象时显示警告和错误,并以可视方式显示给用户。
例如,我有一个实现如下界面的业务对象类:
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}/>
错误是:
当我使用IDataErrorInfo
界面将错误消息放在业务对象上时,这很好用并在文本框周围绘制一个红色边框。
我想要做的还是指定警告,例如:
这些警告会在文本框周围放置橙色边框,并告知用户可能存在问题,但不会阻止它们继续运行。
警告存储在映射PropertyName =&gt;的字符串字典中。 WarningMessage与IDataErrorInfo
的方式类似。
问题:最好的方法是什么?
答案 0 :(得分:2)
您是否已查看此http://www.codeproject.com/KB/WPF/wpfvalidation.aspx
修改强> 请在此处找到示例http://www.filefactory.com/file/b3b4cb7/n/ValidationErrorsSample.zip
HTH
答案 1 :(得分:0)
执行此操作的一个好方法是在验证属性上具有数据触发器的自定义样式(可能是远程VSM和gotostateaction。
我的一个项目示例:
<i:Interaction.Triggers>
<ei:DataTrigger Binding="{Binding UnitData.TestState}" Value="Unknown">
<ei:GoToStateAction StateName="UnknownState"/>
</ei:DataTrigger>
<ei:DataTrigger Binding="{Binding UnitData.TestState}" Value="Pass">
<ei:GoToStateAction StateName="PassState"/>
</ei:DataTrigger>
<ei:DataTrigger Binding="{Binding UnitData.TestState, Mode=OneWay}" Value="Fail">
<ei:GoToStateAction StateName="FailState"/>
</ei:DataTrigger>
<ei:DataTrigger Binding="{Binding UnitData.TestState, Mode=OneWay}" Value="Terminated">
<ei:GoToStateAction StateName="FailState"/>
</ei:DataTrigger>
<ei:DataTrigger Binding="{Binding UnitData.TestState, Mode=OneWay}" Value="Warn">
<ei:GoToStateAction StateName="WarnState"/>
</ei:DataTrigger>
<ei:DataTrigger Binding="{Binding UnitData.TestState}" Value="Indeterminate">
<ei:GoToStateAction StateName="IndeterminateState"/>
</ei:DataTrigger>
</i:Interaction.Triggers>
答案 2 :(得分:0)
CSLA.Net有一个名为PropertyStatus的控件,用于此目的(错误,警告或信息),以及与CSLA其余部分相关的其他功能。但是你可能会看一下代码(开源)的处理方式。
看起来你也可以在绑定到对象的边框颜色上使用转换器(或警告字典,但是整个对象也可以通过IDataErrorInfo处理错误),并使用转换器参数来指定要检查的属性对于。我相信你可以使用元素绑定语法或其他东西来进一步简化这一点。转换器将返回您想要显示的颜色。
答案 3 :(得分:0)
如果您的错误对象是错误/警告/信息/,则可以使用自己的错误对象以及包含信息的属性。.您可以在on the authors blog或{{3 }}