【发布时间】:2014-02-06 10:23:22
【问题描述】:
我在 2 个属性之间使用数据绑定(绑定目标是依赖属性)。如果我改变绑定源的值,绑定目标也会改变(依赖属性的值)。我的问题是:如何处理依赖属性的值变化?
编辑:这是我注册依赖属性的方式:
public static DependencyProperty ItemsProperty = DependencyProperty.Register(
ItemsPropertyName,
typeof(List<ModelItem>),
typeof(CentralPanel),
new UIPropertyMetadata(null, OnItemsChanged));
所以当我在 OnItemsChanged 中设置断点时,该方法只运行一次,即第一次设置 binging source 的值。然后,当我改变绑定源的值时,绑定目标的值也改变了,但是 OnItemsChanged 没有触发,为什么?
【问题讨论】:
-
当您说我更改绑定源的值时,您会更改整个列表或列表中的项目?
-
@dkozl:我更改了整个列表。有什么区别吗?
-
OnItemsChanged仅在您将其设置为List<ModelItem>的不同实例时才会触发。如果它与您在列表中添加或删除项目的列表相同,则不会触发 -
@dkozl:我实际上是在清除列表并添加新元素。我会尝试制作 List
... 的新实例 -
@dkozl:不幸的是它没有任何区别。
标签: c# wpf data-binding