2010-07-21 51 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