通知 ObservableCollection 项目更改
挑战:
ObservableCollection 不会自动检测项目更改,即使实现了 INotifyPropertyChanged。这可以防止 UI 在项目属性更改时更新。
解决方案:
要解决此问题,请考虑以下方法:
TrulyObservableCollection
示例中的 TrulyObservableCollection 类有效地挂钩到集合中每个项目的 PropertyChanged 事件。但是,它会为每个属性更改引发 Reset CollectionChanged 事件,这可能效率低下。
PropertyChanged 事件处理
或者,可以使用常规 ObservableCollection 并注册一个CollectionChanged 时每个项目的 PropertyChanged 事件处理程序。这有助于针对特定项目更改并避免不必要的 CollectionChanged 事件。
实现:
在 MyViewModel 类中,将 MyItemsSource 的 CollectionChanged 事件连接到 MyItemsSource_CollectionChanged 处理程序。在此处理程序中:
当项目的 MyProperty 更改时,调用 MyType_PropertyChanged 处理程序。此处理程序检查属性名称是否为“MyProperty”,如果为真则触发必要的操作。这种方法更加高效,并且提供了一种明确的方法来识别项目更改。
以上是如何有效地通知 ObservableCollection 项目属性更改?的详细内容。更多信息请关注PHP中文网其他相关文章!