2010-07-21 70 views
37

我有一个文本框的数据绑定到一个可空的int通过代码。如果我从文本框中删除数据,它会给我一个验证错误(红色边框)。WPF DataBinding:Nullable Int仍然收到验证错误?

这里是我的绑定代码:

ZipBinding = new Binding("Zip"); 
ZipBinding.Source = Address; 
zipTextBox.SetBinding(TextBox.TextProperty, ZipBinding); 

public Int32? Zip { get { ... } set { ... } } 

它清楚地标记为可空所以为什么不会WPF想给我一个验证问题时,我清楚的文本?

回答

70

验证失败,因为它无法将空字符串转换为可为空的整数。在绑定上将TargetNullValue设置为string.empty,并将空字符串转换为null,这将是有效的。

+0

简单,一行。完成:) – 2010-07-21 18:50:57

+18

工程太棒了!请参阅此答案以了解如何在XAML中执行此操作http://stackoverflow.com/a/1895482/83111 – Oskar 2012-01-04 20:58:17

+0

请勿将其设置为String.Empty,因为您会在字段中看到文本“String.Empty”为null模型中的值。 改为使用空字符串。 例如: '' – Beauty 2017-06-13 12:17:36

0

一个空的TextBox!= null。

您可能需要调整ValidationRule以容纳空字符串作为条目。或者,您可以创建一个转换器,将空字符串转换为空字符串。

+0

所以它失败了,因为它试图将String.Empty解析为Int32? ...如果是这样的话,是的,我想我必须创建一个StringEmpty到空转换器。 – 2010-07-21 18:20:50