2010-04-16 131 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事件(它会火的时候,用户按下进入里面文本框) 然后将焦点更改为第二个文本框。失去焦点会更新绑定值。