将 List<T> 转换为 ObservableCollection<T>

148

我有一个被 JSON 填充的 List<T>,我需要将其转换为 ObservableCollection<T> 以便将其绑定到我的 GridView

有什么建议吗?


重复 - https://dev59.com/BWox5IYBdhLWcg3wpF35#41731406 - vapcguy
这是一个重复的问题,但由于此问题引起了更多的关注,所以现在已经有点晚了。而且你为自己的答案添加链接似乎有些不太好。在我看来,你的回答不必要地扩展了问题的焦点。如果 OP 有 List<T>,无论它有多少级别,都可以使用 ObservableCollection<T> xxx = new(listT); - Barreto
3个回答

312

ObservableCollection < T > 有一个构造函数重载,它接受 IEnumerable < T >。

int列表为例:

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

下面是一个关于ObjectA列表的例子:

ObservableCollection<ObjectA> myCollection = new ObservableCollection<ObjectA>(myList as List<ObjectA>);

我更喜欢这种方式而不是创建扩展方法。这有助于保持依赖项数量的下降。 - markokstate
1
如何实现相反的效果? - Arun Prasad
1
@ArunPrasad var myList = myCollection.toList(); @ArunPrasad 变量 myList = myCollection.toList(); - leoap

20

ObservableCollection有一个构造函数,可以传递你的列表。

引用自MSDN

 public ObservableCollection(
      List<T> list
 )

7

ObservableCollection构造函数可以接受IList或IEnumerable类型的数据。

如果您发现经常这样做,可以创建一个简单的扩展方法:

    public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> enumerable)
    {
        return new ObservableCollection<T>(enumerable);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接