【问题标题】:Two-way databinding to POCO without INotifyPropertyChanged没有 INotifyPropertyChanged 的​​ POCO 的双向数据绑定
【发布时间】:2011-04-12 06:21:29
【问题描述】:

当数据源对象的属性未在其设置器中引发 PropertyChanged 事件时,双向数据绑定如何在 Silverlight 中工作?

例如,在代码示例中,我看到数据绑定到 System.Windows.Point 结构的实例,它没有实现 INotifyPropertyChanged 并且是可变的。如果有人直接在 Point 中设置 XY 属性,而不是用新实例替换对象,会发生什么(或应该发生)?

【问题讨论】:

    标签: c# silverlight data-binding xaml inotifypropertychanged


    【解决方案1】:

    用户界面不更新。这里没有魔法。未抛出任何事件意味着 UI 将错过更新。

    【讨论】:

      【解决方案2】:

      Point 是一个结构体,因此即使 Point 是可变的,您从属性调用中获得的 Point 与存储在底层字段中的 Point 并不相同;这是一个副本。因此,如果您更改副本,则基础字段保持不变。不需要属性更改通知,因为属性的值实际上并没有改变。如果该类实际上直接在其私有字段中对 Point 进行了变异,则只会出现问题。当结构发生突变时,类实现者要么不这样做,要么手动调用 PropertyChanged 通知。

      这就是可变结构很危险的原因之一。它们不能通过属性进行变异,但类的客户可能会错误地认为它们可以。

      【讨论】:

        猜你喜欢
        • 2016-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-09
        • 1970-01-01
        相关资源
        最近更新 更多