当控件上存在验证错误时,我使用名为wpf
的{{1}}事件来了解cs代码。
当他第一次使用Validation.Error
来参加活动时创建错误。
一旦控件出现错误,另一个错误就是两次到事件中:
第一次出现ValidationErrorEventAction.Added
。
第二次出现ValidationErrorEventAction.Added
。
搜索后,我在以下问题中找到了这个主题: Validation.Error giving strange behavior
似乎当控件上出现错误时他想删除错误,然后添加一个新错误,它会以相反方式出现问题,它会添加一个新错误先删除。
任何想法如何解决这个问题?
答案 0 :(得分:1)
我找到了一种了解方法。
我保留一个包含变量名称和错误列表的字典:
private Dictionary<string, List<ValidationError>> invalidList = new Dictionary<string, List<ValidationError>>();
每次向变量添加错误时,我都会将其添加到错误列表中,并在错误清除后将其从错误列表中删除。
然后我可以看到变量是否有任何错误或根本没有错误。
(我需要知道变量的名称,你可以做任何字典包含控件或你需要的东西)
答案 1 :(得分:0)
我找到了一种更简单的方法来知道是否仍然存在验证错误:
在ValidationErrorEventArgs内部,有一个变量指示仍然存在验证错误。
已解决此问题的Validation.Error事件实现示例:
private void TextBox_Error(object sender, ValidationErrorEventArgs e)
{
if (e.Action == ValidationErrorEventAction.Added)
{
((Control)sender).ToolTip = e.Error.ErrorContent.ToString();
}
else
{
if (!((BindingExpressionBase)e.Error.BindingInError).HasError)
((Control)sender).ToolTip = "";
}
}