WinForm TreeView 节点为空,尽管有一个数据源到对象关系列表

问题描述 投票:0回答:2

在我的 Telerik WinForms 应用程序中,我可以通过对象关系绑定将 TreeView 绑定到应用程序中的 Well 对象,如下所示:

this.wellTreeView = new RadTreeView();

BindingList<Well> wells = new BindingList<Well>() { well };

this.wellTreeView.DataSource = wells;
this.wellTreeView.DisplayMember = "name\\name\\name";
this.wellTreeView.ChildMember = "wells\\layers\\items";

此绑定有效,我能够查看 TreeView 层次结构并选择表单中的节点。但是,当尝试获取代码中的节点时,

wellTreeView
为空(0 个节点)并抛出
Index out of range error
在:

// this line should get the root node, i.e. the Well at top level
RadTreeNode node = wellTreeView.Nodes[0];

My Well 类的定义如下:

public class Well
{
    public string name {get; set;}
    public List<Layer> layers {get; set;}
}
public class Layer
{
    public string name {get; set;};
    public List<Item> items {get; set;}
}
public class Item
{
    public string name {get; set;};
    public decimal length {get; set;}
}

我不明白为什么

wellTreeView
是空的,没有任何节点,尽管能够以表单查看树。

我已将其发布在 Telerik 论坛

非常感谢您,任何帮助将不胜感激!

winforms data-binding telerik treeview treenode
2个回答
0
投票

我可以通过调用 TreeView 上的

LoadElementTree()
来解决这个问题:

BindingList<Well> wells = new BindingList<Well>() { well };

this.wellTreeView.DataSource = wells;
this.wellTreeView.DisplayMember = "name\\name\\name";
this.wellTreeView.ChildMember = "wells\\layers\\items";

this.wellTreeView.LoadElementTree();

0
投票

Telerik 团队还提供了一个解决方案,要求我在以编程方式构建控件时初始化

BindingContext

this.wellTreeView = new RadTreeView();
this.wellTreeView.BindingContext = new BindingContext();

Telerik 论坛

© www.soinside.com 2019 - 2024. All rights reserved.