2010-10-16 63 views
5

我正在創建一個應用程序,我一直在假設 ,當一個控件綁定到視圖模型 (即文本框到字符串字段)的成員時,該字符串更新時,只要 用戶更改在文本框中的信息,不遲於。在C#(WPF)中,當UI線程中的數據更改立即發生時,是否會發生數據綁定?

但我發現,當文本框 被更改,並且當用戶從文本框中單擊\ tabs時,該字符串被更新。

(我使用的是Caliburn.Micro框架,如果該事項。)

人能解釋這是正確的,如何讓這個 的變化立即反映出來?

回答

6

這不是一個WPF問題......它完全在於控件。

但是我發現的是,當文本框改變 ,當用戶點擊\標籤出 的文本字符串 被更新。

這是特定的文本框,用於減少設置操作的數量並避免設置不完整的數據。

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c3ae2677-7cc9-4bb3-9cce-4e7c0eeff6f0有一個解決方案 - 基本上更新源觸發器設置爲屬性更改。但是,如果你這樣做,你會在模型中得到更多無效的數據,例如當人們輸入一個invocie數字時,所有的部分將會進入模型。

http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx有一個很好的解釋 - klike說,普通觸發器是PropertyChanged,而文本屬性默認爲LostFocus。

+0

感謝您的回答,我一定會看看鏈接。至於壞數據,視圖模型實際上是在進行輸入驗證,並且不會將任何內容保存到模型中,除非一切都通過。 – Scifiballer24 2010-10-16 07:02:38

+0

當然。如果您只處理「完成的輸入」並且沒有獲得「正在進行中」的更新,那麼它只是少了很多驗證;) – TomTom 2010-10-16 08:23:39

相關問題