首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将List<Object>转换为ObservableCollection<Object>的最佳方法

将List<Object>转换为ObservableCollection<Object>的最佳方法
EN

Stack Overflow用户
提问于 2012-01-30 19:18:48
回答 6查看 29.3K关注 0票数 15

我得到了List<Object>对象在4-6级之间有大量的childs List<Object>

现在我得把它绑定到WPF TreeView..。:(

哪一种将其转换为ObservableCollection<Object>的最佳方式?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-30 19:23:11

答案之一是使用反应性扩展(Rx)。您可以从NuGet获得它,它是由微软开发的。在它的帮助下,您可以简单地说:myListCollection.ToObservable();

如果您的子集合始终位于同名节点中,则可以使用while(item.Collection != null || item.Collection.Count == 0)并将ToObservable()放在循环中。

票数 3
EN

Stack Overflow用户

发布于 2012-01-30 19:22:44

假设您指的是ObservableCollection<T>,如果您希望List直接按原样传递给ObservableCollection,只需使用构造函数:

代码语言:javascript
运行
复制
var oc = new ObservableCollection<Object>(yourListOfObject);

现在,如果您想要解压其中的每一个,您需要做一些工作来将它们折叠到一个ObservableCollection<T>中。

票数 19
EN

Stack Overflow用户

发布于 2012-01-30 19:31:37

假设您有一个定义如下的节点类:

代码语言:javascript
运行
复制
public class Node
{
    public ICollection<Node> Children { get; set; }
}

您可以在任何深度使用递归来转换List<Node>集合:

代码语言:javascript
运行
复制
public static ObservableCollection<Node> ToObservableRecursive(ICollection<Node> nodes)
{
    foreach (Node node in nodes)
        if (node.Children != null)
            node.Children = ToObservableRecursive(node.Children);

    return new ObservableCollection<Node>(nodes);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9069445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档