MVVMパターンを使用してWPFでこの問題を解決する方法に頭を悩ませようとしています。
win32 ツリー コントロールを WPF に変換しています。古いツリー コントロールは、これらの行に沿って Node クラス階層を使用します (BaseNode は基本クラスであり、それに続く各項目はそれから継承され、わずかに拡張されます): BaseNode、GroupNode、VehicleNode、PersonNode、EquipmentNode、SupplyNodes (など)。
これから、GroupNode は、1 つ以上の GroupNode、1 つ以上の VehicleNode、および 1 つ以上の PersonNode である子ノードのリストを持ちます。
VehicleNode には、車両を操作する乗組員となる PersonNodes のリストがあります。VehicleNode には、車両の乗客である PersonNodes のリストも含まれます。これらはそれぞれ、Crew と Passengers というラベルの付いた「ダミー」ノードの下にあります (ただし、どちらも PersonNode タイプです)。
これ以外では、VehicleNode と PersonNode はそれぞれ EquipmentNode と SupplyNode を持ちます。
ツリーにはいくつかの「グループ」ノードがあり、展開するとそのタイプの項目が一覧表示されます。
願わくば、このテキスト図が問題の解決に役立つことを願っています。
- 地上艦隊 (GroupNode)
- 西海岸 (GroupNode)
- 東海岸 (GroupNode)
- トラック 1 (VehicleNode)
- トラック 2 (VehicleNode)
- 乗組員 (DummyNode)
- ドライバーに請求する (PersonNode)
- 乗客 (DummyNode)
- 乗客 1 (PersonNode)
- 乗客 2 (PersonNode)
- 装備品(ダミーノード)
- カメラ (EquipmentNode)
- サングラス (EquipmentNode)
- 備品(ダミーノード)
- アップル(サプライノード)
- 水筒 (SupplyNode)
- 装備品(ダミーノード)
- 装備品(ダミーノード)
- ジャック (EquipmentNode)
- タイヤ鉄 (EquipmentNode)
- 備品(ダミーノード)
- スペアタイヤ (SupplyNode)
- 乗組員 (DummyNode)
- 人事(ダミーノード)
- セールスマン トム (PersonNode)
- 地区マネージャーのサリー (PersonNode)
既存の win32 ツリーでは、Truck 2 ノードを追加するときに、子ノードを手動で循環させ、ダミー ノード (必要に応じて) と子を追加して、子リスト内のノードのタイプと、場合によってはプロパティに基づいてツリーを作成します。子ノード - PersonNode には、乗客か乗務員かを示すフラグがあるため、追加する親ノードがどの親ノードに属するかがわかります。
上記のようにダミーノードを保持できるツリー上のMVVMアプローチでこれを表現する方法に苦労しています。
どんな助けでも大歓迎です!