我有MVVM WPF应用程序,其中模型属性使用验证属性Required和custom属性进行修饰,以检查值是否已存在。验证是在LostFocus上进行的
如果我输入的数据(TextBox)不满足第一个属性,则会显示正确的错误消息,但是如果我修改了这个数据,但是不满足第二个属性,则仍会显示来自第一个属性的错误消息。
如果我输入第一个错误值,然后输入正确值,然后输入第二个错误值,则显示正确的错误信息
我还尝试不使用属性执行验证,但检查属性设置器中的值并抛出异常,一切正常
哪里可以出错?
答案 0 :(得分:0)
问题在于IValueConverter的实现,用于将错误消息显示为控件的工具提示。
不工作:
<Style x:Key="ErrorToolTipStyle" TargetType="Control">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors), Converter={StaticResource ValidationErrorsToString}, Mode=OneWay}"/>
</Style>
工作:
<Style x:Key="ErrorToolTipStyle" TargetType="Control">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent, Mode=OneWay}"/>
</Style>