我知道这是一个相当广泛的问题,所以我很惊讶我还没有找到一个好的答案。这是我的情况:
我有一个名为TimeConverter的类,我经常使用它,它实现了IValueConverter接口,将包含一定时间(例如“25:36”)的字符串转换为表示分钟数的整数(对于早期的分钟)例子是1536)。目前,当有人输入不可翻译的内容(如“asdf”)时,转换器会返回DependencyProperty.UnsetValue,这会导致绑定元素(通常是TextBox)显示红色边框。这是问题,绑定另一端包含整数属性的类需要知道存在转换错误。
我发现如果没有数据项引用绑定的TextBox,这将非常困难并且几乎不可能。如果我得到TextBox的引用,我可以使用Validation附加属性,但我觉得这很邋and,它也不总是可行的。目前我在TextBox中,在Setter内部,在Style内部,在DataTemplate内部(远离可视树)中有一个这样的绑定,这也阻止我使用Validation.Error甚至通知。当然,由于声明属性的方式,将Validation.HasError绑定到数据项的简单答案不起作用。
那么如何在转换失败时通知数据项?