logo DevExpress WPF使用技巧教程 我也要发布文档

如何将不同集合中的项目显示为同一父节点子项


下载DevExpress v20.1完整版    DevExpress v20.1汉化资源获取

通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。

系统背景
  • 平台:WPF
  • 产品:DXTreeList for WPF
  • 框架:.NET Framework Build 20.1.4
  • 操作系统:Windows 10 x64
  • IDE:Microsoft Visual Studio 2019
遇到的问题

在使用TreeListView实现解决方案显示结构化数据时,使用IChildNodesSelector来构建树。工作正常时有一个模型,每个级别可以有多个SubType,ClassA具有成员List ClassB和List ClassC。发现所有示例仅提及一种可能的子类型,至于显示,所有的类都实现一个接口,该接口映射到类的相应属性。

public interface ITreeBaseItem
{
string ObjectType { get; }
string Element { get; }
string Title { get; }
string Detail1 { get; }
string Detail2 { get; }
string Detail3 { get; }
}

该摘录摘自这里

public class CustomChildrenSelector : IChildNodesSelector {
public IEnumerable SelectChildren(object item) {
if (item is ProjectStage)
return ((ProjectStage)item).Tasks;
else if (item is ProjectObject)
return ((ProjectObject)item).Stages;
return null;
}
}

问题是:如果ProjectStage类不仅具有任务,还具有另一个子类型,即目标,该怎么办? 可以使用IChildNodesSelector完成此操作,还是应该继续执行其他策略?

解决方案:

从技术上讲,可以将这些集合合并到选择器中并返回结果。可参考下面演示的方法:How to: Implement Hierarchical Data Binding via Child Nodes Selector。还必须禁用不同类型缺少属性的编辑,使用CellTemplateSelector来实现这种方法。


DevExpress技术交流群2:775869749      欢迎一起进群讨论

40分钟教你入门DevExpress v20.1最新推出控件——甘特图,立即报名>>

慧都高端UI界面开发