2011-01-05 46 views
5

在我的MVVM項目中,我有兩個文本框,其中一個綁定到對象的可空整數字段,另一個綁定到字符串字段。當視圖加載時,如果我輸入任何值綁定到字符串屬性的文本框,我可以看到它的值被更新到對象的字符串屬性。Databound可空值在Silverlight中未更新XAML

但是,當我輸入綁定到對象的可空整數字段的文本框的值時出現問題。如果它是一個適當的整數值,那麼值得到更新。如果我把一個字母數字字符串綁定到我的對象的可空整數字段的文本框中,或者如果我將它留空,那麼我的對象的可空整數字段不會被更新。它仍保留了之前設置的任何內容。

例如,如果我在數字文本框中輸入數字「7」,它將更新爲7.現在,如果我將其從「7」更改爲「7a」或「a7」或「asd」或保留空白。該值仍然保持爲7,這是較早的值。

任何解決這個問題,除了改變可空類型嗎?

感謝您的時間...這裏

回答

1

問題是當你輸入綁定到Nullable<Int32>TextBoxempty stringalphabet values,可空整型值未設置。

在這種情況下,將字符串值轉換爲整數值時綁定失敗。失敗後,它不會將值設置爲null,而只是保留原來的值。你可以通過調試確定這是發生的。

你可以做什麼來解決這個問題是創建一個轉換器。此轉換器嘗試將字符串值轉換爲int,並且如果未能這樣做,則返回null,將其設置爲可爲null的int值。

+0

謝謝。我已經添加了轉換器。但是轉換器的問題是它會返回一個空值,從而清除文本框。我希望用戶看到他們輸入了錯誤的值。清除文本框不會讓他們受益......他們將不得不重新鍵入整個號碼(例如,您在表單中輸入的那些16位以上的數字) – user20358 2011-01-05 15:26:27

6

如果你在你的文本框蒙面只接受數字值,你也可以使用:

文本= {綁定屬性名,模式=雙向,TargetNullValue =「」}

這將正確設置約束INT ?屬性在檢測到空字符串時爲null。

相關問題