我试图围绕如何使用 MVVM 模式在 WPF 中解决这个问题。
我正在将一个 win32 树控件转换为 WPF。旧的树控件沿这些线使用节点类层次结构(BaseNode 是基类,并且从它继承并略微扩展的每个以下项):BaseNode、GroupNode、VehicleNode、PersonNode、EquipmentNode、SupplyNodes (等等)
由此,GroupNode 将有一个子节点列表,可以是一个或多个 GroupNode、一个或多个 VehicleNode 和一个或多个 PersonNode。
VehicleNode 将有一个 PersonNode 列表,这些 PersonNode 将是操作车辆的工作人员。VehicleNode 还会有一个 PersonNode 列表,这些 PersonNode 将是车辆中的乘客。这些中的每一个都位于标记为 Crew 和 Passengers 的“虚拟”节点下(尽管它们都是 PersonNode 类型)。
除此之外,VehicleNode 和 PersonNode 将分别具有 EquipmentNodes 和 SupplyNodes。
树将有几个“组”节点,这些节点将被扩展以列出该类型的任何项目。
希望此文本图将有助于解决说明问题。
- 地面舰队(GroupNode)
- 西海岸 (GroupNode)
- 东海岸 (GroupNode)
- 卡车 1(VehicleNode)
- 卡车 2(VehicleNode)
- 船员(DummyNode)
- 给司机开账单(PersonNode)
- 乘客(虚拟节点)
- 乘客 1 (PersonNode)
- 乘客 2 (PersonNode)
- 设备(DummyNode)
- 相机(设备节点)
- 太阳镜(设备节点)
- 耗材(虚拟节点)
- 苹果(供应节点)
- 水瓶(SupplyNode)
- 设备(DummyNode)
- 设备(DummyNode)
- 杰克(设备节点)
- 轮胎熨斗(设备节点)
- 耗材(虚拟节点)
- 备用轮胎(供应节点)
- 船员(DummyNode)
- 人员(DummyNode)
- 推销员汤姆(PersonNode)
- 区域经理 Sally (PersonNode)
在我们现有的 win32 树中,当我们添加 Truck 2 节点时,我们手动循环遍历子节点并添加虚拟节点(根据需要)和子节点,以根据子列表中的节点类型和可能的属性创建树在子节点上 - PersonNode 上有一个标志来指示它是乘客还是机组人员,所以我们知道添加它应该属于哪个父节点。
我正在努力研究如何在树上的 MVVM 方法中表示这将允许我们保留上述虚拟节点。
任何帮助将不胜感激!