假设我的ListBox
绑定到我的视图模型上的可观察集合,其中数据项是一个具有Name
和Value
属性的简单类。 / p>
当我从视图模型集合中添加或删除项目时,ListBox会自动更新。
但是,如果我更改数据项的名称,我也希望ListBox也刷新,因此我在视图模型属性中引发了属性更改,该属性在我在代码中更新名称后公开了observable集合。但是ListBox不会更新。
就好像绑定说的那样,你给我的对象(集合本身)与我拥有的对象相同,所以它没有真正改变,是吗?愚蠢的程序员,告诉我在不需要时刷新!
我发现只有几种方法可以解决这个问题:
这两种方式都不是理想的,虽然第一种方法绝对是可取的 - 确实不应该让列表框更新很难!
任何人都可以解释为什么绑定以这种方式工作,并且是否有任何方法可以更改行为,以便绑定将始终更新属性更改通知,无论源是否已更改?
答案 0 :(得分:1)
我觉得ObservableCollection
中的项目没有实现INotifyPropertyChanged
。您需要执行此操作,以便在更改集合中项目的Name
属性时,更新UI。根据您的描述,框架和绑定集合的工作方式与应该完全一致。