2010-06-22 44 views
2

我有一個用戶界面,用戶可以輸入一個值並在ViewModel中更新該值(並最終寫回數據庫)。在WPF中將文本框設置爲「無」,但MV值未更新

如果實際輸入了一個值,這可以正常工作。但是,如果你想清除該值(即將其設置爲無),它似乎不起作用。

因此,例如,如果它是'狗',但我清楚,文本和「保存」的變化無法識別。

我打電話給「PropertyChanged」,如果輸入一個值就會觸發它。但是,如果文本被清除,並且我輸入或者跳出文本框,則屬性不會被更新。

是否有一些特殊的方式來處理這個問題還是我只是想念一些東西?

感謝

+0

numeric,string,datetime? – 2010-06-22 22:20:41

+1

您是否清除了文本並丟失了重點後才檢查數據庫?你有沒有設置任何UpdateSourceTrigger到你的文本框,或者它是默認的?如果您將其設置爲PropertyChanged,則只要您的文字發生更改就會觸發。你清除文本框,PropertyChanged將被解僱,當你失去焦點時,它不會因爲屬性相同。但是,如果數據庫本身沒有更新,那麼應該有一些其他問題。 – Amsakanna 2010-06-23 04:58:46

+0

我有同樣的困難 - 基本字符串 - 沒有數據庫只是評估視圖模型。當我通過按鈕命令將viewmodel屬性設置爲空白時,我的驗證不再生效 – barrypicker 2015-12-02 19:57:01

回答

1

它應該工作....

你確定你的其他層(尤其是DB)接受 '空' 值?這可能是一個轉換 - 例外或錯誤被默默食用。

要診斷,請嘗試不同類型的不同屬性。

0

正如Veer在上面的評論中指出的,嘗試使用UpdateSourceTrigger如下來檢測您何時更改文本。在您的視圖模型中設置一個斷點,並在您輸入文本框時查看是否捕獲更改事件。

<TextBox Text="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
0

如果數據類型是int,則屬性不會更新。 將屬性設置爲字符串將在清除時更新屬性。