您的CollectionViewModel
类利用ObservableCollection<EntityViewModel>
> ContentList
。 尽管在您的RaisePropertyChanged("IsRowChecked")
>中使用EntityViewModel
在IsRowChecked
属性中发出更改,但这些更新并未始终如一地反映。
这是一种创建一个真正可观察的集合的解决方案,可可靠地检测其包含对象的属性的变化:
<code class="language-csharp">public sealed class TrulyObservableCollection<T> : ObservableCollection<T> where T : INotifyPropertyChanged { // ... implementation details ... }</code>
此增强ObservableCollection
确保所有添加的项目实现INotifyPropertyChanged
。 添加项目后,它会订阅该项目的PropertyChanged
事件。 当项目中的属性更改时,该集合将使用NotifyCollectionChangedEventArgs
提出NotifyCollectionChangedAction.Replace
。此操作会触发所有界控控件的更新,从而确保一致的UI刷新。 (注意:// ... implementation details ...
部分将包含代码来处理订阅和事件升高。)
以上是为什么我的ObservableCollection检测项目属性不变?的详细内容。更多信息请关注PHP中文网其他相关文章!