【问题标题】:Setting textBox.Text doesn't update bound twoway property?设置 textBox.Text 不会更新绑定的双向属性?
【发布时间】:2010-11-10 08:37:19
【问题描述】:

如果 TextBox 上的 Text 使用双向模式数据绑定到属性并且我将 Text 设置为某个值,它应该更新属性是否有意义?当我在控件中键入时,我的属性会更新,但当我在代码中设置值时不会更新。

【问题讨论】:

    标签: c# wpf data-binding properties


    【解决方案1】:

    我会说直接修改绑定的 Text 属性是没有意义的。您的代码应该设置绑定的另一端并允许绑定更新控件。

    如果在设置 Text 属性时更新绑定对象,则需要特殊情况代码来检测此类分配何时是绑定对象因其他原因而更改的结果。否则你会陷入无限循环。

    【讨论】:

    • 这个问题来自我正在以编程方式添加/删除数据绑定的一些工作。我发现每当我在代码中设置绑定时,它都会将我绑定的属性和文本框设置为空字符串。当我再次设置数据绑定时,我希望将文本框中的文本设置为属性,而不是相反。为什么我首先要删除数据绑定?因为该属性会不断更新,我不希望文本框在焦点集中时更改其文本。
    • 也许您应该在问题本身中加入一些代码,包括这些细节。
    【解决方案2】:

    这是因为它只在文本框失去焦点时提交数据。 Here 是一个与此相关的问题。

    【讨论】:

      【解决方案3】:

      您不应该设置文本框的 .Text 值...设置它绑定到的属性的值。 :)

      我建议您阅读更多有关用于设计视图的 Model-View-ViewModel 方法的信息。在做这种工作时,它保持清晰的关注点分离。您看到这个关于焦点导致绑定刷新的“错误”的原因是因为大多数情况下这种事情是不合适的。

      这里有一段非常不错的 MVVM 介绍视频:MVVM on Channel 9

      【讨论】:

        猜你喜欢
        • 2013-02-21
        • 2023-03-18
        • 2012-07-20
        • 2012-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        相关资源
        最近更新 更多