强制绑定更新 Silverlight
Posted
技术标签:
【中文标题】强制绑定更新 Silverlight【英文标题】:Force Binding Update Silverlight 【发布时间】:2011-02-09 00:28:23 【问题描述】:如何强制我的对象 DataContext 绑定更新?我在网格上使用一个事件,在我的事件触发之前没有处理绑定更新。
有什么便宜的技巧可以解决这个问题吗? 最后,我总是可以用旧的手动方式从我的文本框中获取值并更新我的对象,但最好让绑定为我做这件事。
更新
我的网格包含两个文本框。如果用户单击网格(MouseButtonUp 事件)然后我保存更改。但是在我的 MouseButtonUp 事件处理程序中,数据上下文还不是最新的。我想这是因为文本框只有在失去焦点时才会更新。
【问题讨论】:
【参考方案1】:您可以通过在绑定上调用 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
【讨论】:
【参考方案2】:您也可以捕获 TextInput 事件(当用户在文本框内按下回车键时它会触发) 然后将焦点更改为第二个文本框。失去焦点将更新绑定值。
【讨论】:
以上是关于强制绑定更新 Silverlight的主要内容,如果未能解决你的问题,请参考以下文章
内部字段更改时强制对 DependencyProperty 进行绑定更新
Kendo UI:在 TextBox 中的 KeyPress 上强制更新 ViewModel