我得到了List<Object>
,对象在4-6级之间有大量的childs List<Object>
。
现在我得把它绑定到WPF TreeView..。:(
哪一种是将其转换为ObservableCollection<Object>
的最佳方式?
发布于 2012-01-30 19:23:11
答案之一是使用反应性扩展(Rx)。您可以从NuGet获得它,它是由微软开发的。在它的帮助下,您可以简单地说:myListCollection.ToObservable();
如果您的子集合始终位于同名节点中,则可以使用while(item.Collection != null || item.Collection.Count == 0)
并将ToObservable()
放在循环中。
发布于 2012-01-30 19:22:44
假设您指的是ObservableCollection<T>
,如果您希望List
直接按原样传递给ObservableCollection
,只需使用构造函数:
var oc = new ObservableCollection<Object>(yourListOfObject);
现在,如果您想要解压其中的每一个,您需要做一些工作来将它们折叠到一个ObservableCollection<T>
中。
发布于 2012-01-30 19:31:37
假设您有一个定义如下的节点类:
public class Node
{
public ICollection<Node> Children { get; set; }
}
您可以在任何深度使用递归来转换List<Node>
集合:
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);
}
https://stackoverflow.com/questions/9069445
复制相似问题