看来其他人遇到此问题: Validation.HasError does not trigger again if new error comes in while already true
Validation.Error未使用最新的错误消息进行更新。
它显示上一个错误,而不是最后一个实际调用的错误。当我记录每个返回时,PropertyX大于或者PropertyX小于返回的值,但它不会在我的工具提示中显示该消息。它将显示“必需”。
我还发现,当PropertyX大于或者PropertyX小于返回值时,我的工具提示转换器不会被调用。
以下是验证码:
string this[string columnName]
{
get
{
switch(columnName)
{
case "Property1":
int output;
if (true == string.IsNullOrEmpty(this.Property1))
{
return "Required";
} else if (true == int.TryParse(this.Property1, out output))
{
return "Invalid integer";
} else if (true == this.Property1Int.HasValue &&
true == this.Property2Int.HasValue)
{
if (this.Property1Int.Value < this.Property2Int.Value)
{
return "Property2 is greater than Property1";
}
}
break;
case "Property2":
int output;
if (true == string.IsNullOrEmpty(this.Property2))
{
return "Required";
} else if (true == int.TryParse(this.Property2, out output))
{
return "Invalid integer";
} else if (true == this.Property1Int.HasValue &&
true == this.Property2Int.HasValue)
{
if (this.Property2Int.Value > this.Property1Int.Value)
{
return "Property2 is greater than Property1";
}
}
break;
};
return string.Empty;
}
}
发生了什么事?
答案 0 :(得分:3)
如果您正在使用转换器,就像其他问题一样,我们确信它不是最好的做事方式。特别是像WPF这样的动态环境。
所以我会建议直接绑定到(Validation.Errors).CurrentItem
而不是使用转换器,如下所述:
答案 1 :(得分:0)
如果您的绑定使用的是转换器,则可以通过删除转换器并更改绑定来解决此问题。
例如,说XAML如下所示:
OnFailure
然后通过将代码更新为以下内容,您将绕过转换器:
<Setter Property="ToolTip" Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors), Converter={StaticResource yourConverter}}" />