- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
来自关于 OnCollectionChanged 的 MSDN:“在添加、删除、更改、移动或刷新整个列表时发生。”
我正在更改附加到驻留在我的集合中的对象的属性,但未触发 OnCollectionChanged。我正在 obj 类上实现 iNotifyPropertyChanged。
public class ObservableBatchCollection : ObservableCollection<BatchData>
{
protected override void OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if(e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
foreach (BatchData item in e.NewItems)
{
}
}
base.OnCollectionChanged(e);
}
public ObservableBatchCollection(IEnumerable<BatchData> items)
: base(items)
{
}
}
对我来说,这意味着当集合中的项目发生更改时,例如对象的属性,应该触发此事件。然而,事实并非如此。我希望能够知道我的自定义集合中的项目何时更改,以便我可以在需要时对其执行计算。
有什么想法吗?
最佳答案
ObservableCollection<T>
仅当集合本身发生变化 时才引发事件。集合中包含的内部状态发生变化的项目没有改变集合的结构,并且 ObservableCollection<T>
不会举报的。
一个选择是继承ObservableCollection<T>
并订阅每个项目的 OnPropertyChanged
添加时的事件。在该处理程序中,您可以引发自定义事件,或回退到集合自己的 PropertyChanged
事件。请注意,如果你真的走这条路,你应该添加一个通用约束,以便 T : INotifyPropertyChanged
.
关于C# ObservableCollection OnCollectionChanged 项目更改时不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7099050/
来自关于 OnCollectionChanged 的 MSDN:“在添加、删除、更改、移动或刷新整个列表时发生。” 我正在更改附加到驻留在我的集合中的对象的属性,但未触发 OnCollection
我正在学习 WPF 中的 ObservableCollections,但有些事情我不清楚。我知道如果我将一个控件绑定(bind)到一个 ObservableCollection 并且该集合发生变化,该
在我的程序中,我有一个抽象类 ObservableKeyedCollection继承自 KeyedCollection并且还实现了 INotifyCollectionChanged . 此抽象类的实现
请注意,我正在尝试使用 NotifyCollectionChangedAction.Add 操作而不是 .Reset。后者确实有效,但对于大型收藏来说效率不高。 所以我将 ObservableColl
我是一名优秀的程序员,十分优秀!