【问题标题】:In C# (WPF) does databinding occur when the datachanges in the UI thread immediately?在 C# (WPF) 中,当 UI 线程中的数据立即更改时,是否会发生数据绑定?
【发布时间】:2010-10-16 06:35:15
【问题描述】:

我正在创建一个应用程序,我一直在假设 当控件绑定到视图模型中的成员时 (即一个文本框到一个字符串字段)字符串会在任何时候更新 用户更改文本框中的信息,以后不会。

但我发现当文本框更新字符串时 当用户从文本框中单击\tabs 时,会发生更改。

(如果重要的话,我正在使用 Caliburn.Micro 框架。)

谁能解释一下哪个是正确的以及如何做到这一点 更改会立即反映吗?

【问题讨论】:

    标签: c# .net wpf mvvm


    【解决方案1】:

    这不是 WPF 问题...它完全取决于控件。

    但我发现字符串 更改文本框时更新 并且当用户单击 \tabs 时 文本框。

    这是一个特定的文本框,以减少设置操作的数量,避免设置不完整的数据。

    http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c3ae2677-7cc9-4bb3-9cce-4e7c0eeff6f0 有一个解决方案 - 基本上更新源触发器设置为属性更改。但是,如果这样做,您会在模型中获得更多无效数据,例如当人们输入发票编号时,所有部分都将进入模型。

    http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx 有一个很好的解释 - 就像它说的那样,正常触发器是 PropertyChanged,而文本属性默认为 LostFocus。

    【讨论】:

    • 感谢您的回答,我一定会查看链接。至于坏数据,视图模型实际上是在进行输入验证,除非一切都通过,否则不会将任何内容保存到模型中。
    • 当然。如果您只处理“完成的输入”而不是“在路上”更新,那么验证就会少得多;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多