在我的 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 论坛 也
非常感谢您,任何帮助将不胜感激!
我可以通过调用 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();
Telerik 团队还提供了一个解决方案,要求我在以编程方式构建控件时初始化
BindingContext
:
this.wellTreeView = new RadTreeView();
this.wellTreeView.BindingContext = new BindingContext();