Han*_*ish 3 c# observablecollection inotifycollectionchanged inotifypropertychanged
我创建了一个 ObservableCollection<T> ,每当集合中对象的属性 (T: INPC) 发生更改时,它都会触发 CollectionChangedEvent。我想知道 T 的哪个属性触发了 CollectionChangedEvent,所以我尝试了以下操作:
void item_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset, e));
}
Run Code Online (Sandbox Code Playgroud)
我将 PropertyChangedEventArgs e 传递给 NotifyCollectionChangedEventArgs 的构造函数。
根据 Intellisense,第二个构造函数采用两个参数:NotifyCollectionChangedAction 和一个名为“changedObject”的对象,该对象被描述为“受更改影响的项目”。
所以我想我可以在 CollectionChangedEventHandler 中获取该对象并检查 PropertyName,但是哦!惊喜!NotifyCollectionChangedEventArgs 不公开“ChangedObject”属性(我可以看到 Action、NewItems、OldItems、NewStartingIndex、OldStartingIndex)。
关于如何实现这一目标有什么想法吗?顺便问一下,使用稍后无法访问的对象构造 NotifyCollectionChangedEventArgs 有什么用处?
当您使用NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction, object)构造函数时,changedItem要么位于NewItems集合中(如果您指定NotifyCollectionChangedAction.Add),要么位于OldItems集合中(如果您指定NotifyCollectionChangedAction.Remove)。
如果指定NotifyCollectionChangedAction.Reset,changedItem则参数必须为null,否则您将得到一个ArgumentException。
如果您指定任何其他NotifyCollectionChangedAction值,您还将获得一个ArgumentException.
| 归档时间: |
|
| 查看次数: |
6757 次 |
| 最近记录: |