【问题标题】:How to convert List<Objects> to an ObservableRangeCollection如何将 List<Objects> 转换为 ObservableRangeCollection
【发布时间】:2016-11-01 19:26:06
【问题描述】:

我正在使用 Xamarin 表单,它们的模板带有 MvvMHelpers 对象,可在 ViewModel 中用作 ObservableRangeCollections。我知道 ObservableCollections。如果您尝试这样做:

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

有人知道如何使用ObservableRangeCollection 吗? Google、Bing 或 StackOverflow 中没有任何内容。

尝试搜索,您会看到 Xamarin 正在推广新事物,以至于没人知道它是什么。

【问题讨论】:

  • 如果我有帮助,请将我的答案标记为正确。谢谢。

标签: mvvm xamarin xamarin.forms observablecollection


【解决方案1】:

ObservableRangeCollection 是 Xamarin Evangelist James Montemagno 的帮助类。

源码在他的github上: https://github.com/jamesmontemagno/mvvm-helpers

ObservableRangeCollection 打算在将 Collections 添加/替换到 ObservableCollection 时提供帮助。

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

这是ObservableRangeCollection 的用武之地。它允许在不为每个元素触发事件的情况下将元素替换/添加到集合中。

【讨论】:

  • 谢谢罗德里戈!这对我来说解释了很多。我看到 Sushi Hangover 有一个答案,这对我来说也是正确的答案。但你的答案是第一位的,并添加了一些解释,帮助我理解选择哪个。 ObservableCollection 与 ObservableRangeCollection 和事件。
【解决方案2】:

ObservableRangeCollectionObservableCollection 的子类。

所以在你的例子中,替换你的&lt;T&gt;,即:

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

【讨论】:

  • 感谢您的回复!我正在这样做,但 ReplaceRange 每次都抛出一个错误。我知道它是一个只读类,但是当我切换到 ObservableCollection 时,代码起作用了。
【解决方案3】:

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

你想要达到的目标可以这样完成:

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

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

阅读更多关于ObservableCollection的信息。

【讨论】:

  • 您好 jzeferino,我将 ObservableCollection 用于 WPF,但从未使用过 ObservableRangeCollection。我不知道这是对 ObservableCollection 的扩展。无论如何谢谢!
【解决方案4】:

查看我的回答 here,它是 ObservableRangeCollection 的增强版,针对减少事件引发和 UI 中项目的重用进行了优化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2018-12-27
    • 2013-07-22
    • 1970-01-01
    相关资源
    最近更新 更多