2010-04-16 66 views
16

如何強制我的對象DataContext綁定更新?我在網格上使用事件,並且綁定更新在我的事件觸發之前未被處理。強制綁定更新Silverlight

任何便宜的技巧來解決這個問題? 最後,我總是可以通過手動方式從我的文本框中獲取值並更新我的對象,但這樣做會很高興讓綁定爲我做。

UPDATE

我的網格包含兩個文本框。如果用戶單擊網格(MouseButtonUp事件),則保存更改。但在我的MouseButtonUp事件處理程序中,datacontext尚未更新。我想這是因爲一個文本框只有在焦點丟失時纔會更新。

回答

31

您可以通過在綁定上調用UpdateSource()方法來強制更新源綁定。嘗試將它添加到保存之前的MouseButtonUp事件處理程序。

像這樣:

BindingExpression binding = FirstTextBox.GetBindingExpression(TextBox.TextProperty) 
if (null != binding) binding.UpdateSource(); 

你可以找到在MSDN上更多這方面的信息:http://msdn.microsoft.com/en-us/library/system.windows.data.bindingexpression.updatesource(VS.95).aspx

+0

我還沒試過,但我確定它會工作。謝謝。 – Matt 2010-04-20 16:47:53

+0

工程就像一個魅力。 – grabah 2012-06-20 13:31:02

0

Alternativly你可以趕上TextInput事件(它會火的時候,用戶按下進入裏面文本框) 然後將焦點更改爲第二個文本框。失去焦點會更新綁定值。