我得到了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
复制相似问题