c# - 您可以数据绑定(bind) TreeView 控件吗?

标签 c# treeview data-binding

通常,当我使用 C#/VB 附带的标准 TreeView 控件时,我会编写自己的方法来将数据传入和传出 Tree 的内部层次结构存储。

可能有一些方法可以将 GUI“绑定(bind)”到我可以指向的数据存储(例如 XML 文件),并且当用户编辑树项目时,它应该将其保存回存储中。有什么办法吗?

最佳答案

我通过创建一个继承 TreeNode 并包含一个对象的类来绕过它。 然后您可以将记录绑定(bind)到节点并在 Click 或 DoubleClick 事件期间调用它。 例如。

class TreeViewRecord:TreeNode
    {
        private object DataBoundObject { get; set; }

        public TreeViewRecord(string value,object dataBoundObject)
        {
            if (dataBoundObject != null) DataBoundObject = dataBoundObject;
            Text = value;
            Name = value;
            DataBoundObject = dataBoundObject;
        }

        public TreeViewRecord()
        {
        }

        public object GetDataboundObject()
        {
            return DataBoundObject;
        }
    }

然后您可以在构建 TreeView 时绑定(bind)到每个节点,例如。

TreeView.Nodes.Add(new TreeViewRecord("Node Text", BoundObject));
//or for subNode
TreeView.Nodes[x].Nodes.Add(new TreeViewRecord("Node Text", BoundObject));

然后你可以像这样绑定(bind) DoubleClick 事件

private void TreeViewDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
             object exp = ((TreeViewRecord) e.Node).GetDataboundObject();
             //Do work
        }

关于c# - 您可以数据绑定(bind) TreeView 控件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/990112/

相关文章:

ms-access - 注册 MSCOMCTL.OCX 后,TreeView 控件仍不可用

php - 具体如何制作 "tree view"

data-binding - spring mvc绑定(bind)到2个具有相同字段的对象

C# 对象初始化程序将初始化只读属性,但仅适用于非原始类型

c# - 在哪里放置转换函数?

c# - 如何使用包含 "raw"JSON 的字符串成员序列化和反序列化类型,而无需在此过程中转义 JSON

css - 删除使用伪类添加的 JavaFX TreeCell 格式

c# - 使用嵌套资源字典动态更改 wpf 中的主题

c# - 如何报告实体对象的自定义(添加)计算属性已更改?

c# - 简单的减法和铸题