【发布时间】:2010-11-10 08:37:19
【问题描述】:
如果 TextBox 上的 Text 使用双向模式数据绑定到属性并且我将 Text 设置为某个值,它应该更新属性是否有意义?当我在控件中键入时,我的属性会更新,但当我在代码中设置值时不会更新。
【问题讨论】:
标签: c# wpf data-binding properties
如果 TextBox 上的 Text 使用双向模式数据绑定到属性并且我将 Text 设置为某个值,它应该更新属性是否有意义?当我在控件中键入时,我的属性会更新,但当我在代码中设置值时不会更新。
【问题讨论】:
标签: c# wpf data-binding properties
我会说直接修改绑定的 Text 属性是没有意义的。您的代码应该设置绑定的另一端并允许绑定更新控件。
如果在设置 Text 属性时更新绑定对象,则需要特殊情况代码来检测此类分配何时是绑定对象因其他原因而更改的结果。否则你会陷入无限循环。
【讨论】:
这是因为它只在文本框失去焦点时提交数据。 Here 是一个与此相关的问题。
【讨论】:
您不应该设置文本框的 .Text 值...设置它绑定到的属性的值。 :)
我建议您阅读更多有关用于设计视图的 Model-View-ViewModel 方法的信息。在做这种工作时,它保持清晰的关注点分离。您看到这个关于焦点导致绑定刷新的“错误”的原因是因为大多数情况下这种事情是不合适的。
这里有一段非常不错的 MVVM 介绍视频:MVVM on Channel 9
【讨论】: