如何将列表<Objects>转换为可观察范围集合



我使用Xamarin表单和他们的模板自带MvvMHelpers对象在ViewModel作为ObservableRangeCollections中使用。我知道ObservableCollections。如果你想这样做:

ObservableRangeCollection<Object> collection = new ObservableRangeCollection<Object>();
List<Object> objects = new List<Objects>();
collection.ReplaceRange(objects);
//error invalid type 

有人知道如何使用ObservableRangeCollection吗?在谷歌、必应或StackOverflow上都找不到相关信息。

尝试搜索,你会看到Xamarin正在推广一些新的东西,没有人知道它是什么。

ObservableRangeCollection是Xamarin布道者James Montemagno的一个助手类。

源代码可以在他的github中找到:https://github.com/jamesmontemagno/mvvm-helpers

ObservableRangeCollection打算帮助在ObservableCollection中添加/替换Collections

在"常规"ObservableCollection中,对于每个添加到Collection的新项目,OnCollectionChanged事件将引发。

这就是ObservableRangeCollection发挥作用的地方。它允许替换/添加元素到集合中,而无需为每个元素触发事件。

ObservableRangeCollectionObservableCollection的子类。

所以在你的例子中,替换你的<T>,即:

ObservableRangeCollection<string> collection = new ObservableRangeCollection<string>(); 
List<string> objects = new List<string>(); 
collection.ReplaceRange(objects); 

查看这里的代码:https://github.com/jamesmontemagno/mvvm-helpers/blob/master/MvvmHelpers/ObservableRangeCollection.cs

这不是什么新鲜事。有很多代码使用ObservableCollection

你想达到的目的可以这样做:

List<Object> myList = new List<Objects>();
ObservableCollection<Object> myCollection = new ObservableCollection<Object>(myList);

阅读更多关于ObservableCollection的信息

在这里查看我的答案,这是ObservableRangeCollection的增强版本,优化了更少的事件引发和UI中项目的重用。

最新更新