0

フラット構造を階層構造に変換する必要があります。私のアーキテクチャは次のとおりです。

各アイテムのレベルと親を取得し、この構造を観察可能なコレクションに追加して、xaml にメニュー コントロールをロードしたいと考えています。

=======

アイテム1

--Childitem1

--ChildItem2

アイテム2

--ChildItem3

----------ChildItem7

--ChildItem4

----------ChildItem8

アイテム3

--ChildItem5

--ChildItem6

---------------ChildItem9

C#でこれを行う簡単な方法は何ですか?

4

2 に答える 2

0

これは簡単ではありません。私は常に Winforms ツリービューをコーディングしています。コードのチャンクがいくつかあり、それらはすべて大きいです。

ParentItem というクラスを作成します。ParentItem 内には、Children という名前の ParentItem のコレクションがあります。要するに、各要素はそれ自体のさらなるインスタンスのリストを含むことができなければなりません。

したがって、ある時点で次のようなコードが表示 されることがあり

ParentNode x1 = new ParentNode(1, "Item1"); // constructor contains record Id field and descriptive text
x1.Children.Add(new ParentNode(1, "ChildItem1"); // under the presumption the record Id is for a different table
x1.Children[0].Children[0].Add(new ParentNode(7, "ChildItem7"); // third level, not 5th level as in your example

ます。ノードをツリービュー コントロールに追加すると、子が子の子に追加されます。

これは簡単なアイデアであり、実際の実装はもっと複雑です。

于 2013-06-12T05:17:54.953 に答える
0

次のような階層構造を作成できます。

class Item
{
   public List<Item> Childs {get; set;}

   // other properties and methods
}

異なるタイプの子オブジェクトを含むより複雑な階層が必要な場合は、複合パターンを使用できます: http://en.wikipedia.org/wiki/Composite_pattern

于 2013-06-12T05:06:37.440 に答える