我使用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
发挥作用的地方。它允许替换/添加元素到集合中,而无需为每个元素触发事件。
ObservableRangeCollection
是ObservableCollection
的子类。
所以在你的例子中,替换你的<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中项目的重用。