草庐IT

CollectionChanged

全部标签

c# - 使用 Rx( react 性扩展)观察 ObservableCollection 中的特定项目

我有一个ObservableCollection,我需要为特定项目引用它。如果该项目不存在,我需要通过ReactiveExtensions监控它是否/何时出现该项目,但在设置声明时需要一些帮助。我仍然不熟悉所有不同的Linq扩展是如何工作的,所以我不确定该怎么做。谁能指出我正确的方向?为了更好地说明,我需要像下面这样的东西:publicclassmyitem:INotifyPropertyChanged{privatestring_key;privatestring_value;publicstringkey{get{return_key;}set{_key=value;NotifyP

c# - 在 CollectionChanged 事件处理程序中从 ObservableCollection 中移除一个项目

我希望能够在将某些项目添加到ObservableCollection后拒绝它们。我无法对ObservableCollection进行子类化或使用任何类型的View,因此我似乎仅限于使用定义的一个事件处理程序(CollectionChanged)对禁止的项目执行.Remove()。如果项目在引发事件和处理事件之间的短时间内存在,那很好;这些项目不应该保留在集合中。在CollectionChanged事件处理程序中调用.Remove()似乎是不允许的。在运行时.NET抛出InvalidOperationException:"CannotchangeObservableCollectiond

c# - 合并的 ObservableCollection

我有两个ObservableCollections,我需要在一个ListView控件中同时显示它们。为此,我创建了MergedCollection,它将这两个集合呈现为一个ObservableCollection。这样我就可以将ListView.ItemsSource设置为我的合并集合,并且列出两个集合。添加工作正常,但是当我尝试删除项目时,显示未处理的异常:Anunhandledexceptionoftype'System.InvalidOperationException'occurredinPresentationFramework.dllAdditionalinformatio

c# - 无法在 CollectionChanged 事件期间更改 ObservableCollection

我有一个CollectionChanged事件绑定(bind)到ObservableCollection。此CollectionChanged事件然后调用另一个函数,该函数旨在使用原始集合中的项目更新另一个集合(相同类型)。我已经阅读了关于“在CollectionChanged事件期间无法更改ObservableCollection”的其他帖子,我完全理解为什么不赞成在CollectionChanged事件中修改集合以及为什么这可能会导致循环引用...但在这种特殊情况下,我没有修改原始集合,我只是将其中的一个项目添加到不相关的集合中。所以我的问题是..我在做什么有什么问题吗?我不明白如

c# - 如何在 ObservableCollection 上引发 CollectionChanged 事件,并将更改的项目传递给它?

我有一个继承自ObservableCollection的类,并添加了一些额外的方法,例如AddRange和RemoveRange我的基本方法调用是这样的:publicvoidAddRange(IEnumerablecollection){foreach(variincollection)Items.Add(i);OnCollectionChanged(newNotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));}我的问题是我想在CollectionChanged事件中访问e.NewItems或e.O

c# - 如何避免在替换所有元素或添加元素集合时多次触发 ObservableCollection.CollectionChanged

我有ObservableCollection集合,我想用新的元素集合替换所有元素,我可以这样做:collection.Clear();或:collection.ClearItems();(顺便说一句,这两种方法有什么区别?)我也可以使用foreach至collection.Add一个接一个,但这会触发多次添加元素集合时相同。编辑:我在这里找到了一个很好的图书馆:EnhancedObservableCollectionwithabilitytodelayordisablenotifications但它似乎不支持silverlight。 最佳答案

c# - 为什么 ReadOnlyObservableCollection.CollectionChanged 不公开?

为什么是ReadOnlyObservableCollection.CollectionChangedprotected而不是公开的(因为相应的ObservableCollection.CollectionChanged是)?如果我无法访问CollectionChanged事件,实现INotifyCollectionChanged的集合有什么用? 最佳答案 这是解决方案:CollectionChangedeventsonReadOnlyObservableCollection您必须将集合转换到INotifyCollectionChan