【问题标题】:Changing structure of underlying IVirtualTreeList Datasource for DevExpress TreeList更改 DevExpress TreeList 的底层 IVirtualTreeList 数据源的结构
【发布时间】:2013-03-22 08:12:38
【问题描述】:

我有一个 TreeList,它显示了我的业务对象层次结构,它的所有部分都实现了 IVirtualTreeListData。但是,在某些时候我想进行更改:删除一些数据,可能添加一些数据或将叶子移动到另一个包含节点。我可以对底层业务对象进行更改,但显示的树不受影响。

我推测原因在于TreeList遍历IVirtualTreeListData的层次结构一次,(它对应于节点的第一次扩展),然后只是使用存储在途中检索到的节点中的数据。那么,如何将数据源的变化传播到视图中呢?

【问题讨论】:

    标签: c# devexpress xtratreelist


    【解决方案1】:

    要启用 XtraTreeList 节点层次结构与底层业务对象的自动同步,请为您作为 VirtualTreeGetChildNodesInfo.Children 属性提供的子对象集合实现 IBindingList 接口。
    完成此任务的最简单方法是在您的 BusinessObject 中创建一个BindingList<YourBusinessObject>() 实例来存储所有子对象并将其分配给IVirtualTreeListData.VirtualTreeGetChildNodes() 方法实现中的info.Children 属性。 在这种情况下,当您的对象被更改或删除时,TreeList 将自动刷新相应的节点。

    【讨论】:

    • 重申一下:BindingList 会自动检测其包含的成员的属性变化吗?
    • @Srv19:是的,但您必须在业务对象上实现 INotifyPropertyChanged 才能使其工作。
    猜你喜欢
    • 1970-01-01
    • 2021-06-02
    • 2017-10-24
    • 1970-01-01
    • 2014-09-10
    • 2014-06-26
    • 2014-03-26
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多