强制绑定更新 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 进行绑定更新

vue $forceUpdate 强制更新

Kendo UI:在 TextBox 中的 KeyPress 上强制更新 ViewModel

即使数据没有改变,我可以用 setState 强制重新渲染吗?我的 GUI 不会更新?

如何强制 observable 从 DOM 元素中读取值

vue绑定样式不起作用