
TreeViewのノードTreeView のヘルプの例は、TreeViewItem をノードにしています。独自のデータが必要な場合は、TreeViewItem を継承すれば良さそうです。 1.ノードの列として処理するために同じ型のノードの連鎖としてプログラミングするために。 1.1.TreeView と ノード開始は、TreeView ですが、TreeView 自体は、ヘッダを持たないので、表示上のルートにはなりません。表示されるのは、TreeView.Items[]に格納したノードになります。 1.2.ルートがあるか(最上位の展開表示) ルートがあり、たたむと1つになるようにするには、TreeView.Items[0]にだけ、ノードを設定することになります。 ルートがない表示は、TreeView.Items[]のCountが >1 のことです。 ノードの展開表示は、TreeViewItem.IsExpanded で行いますが、TreeViewには IsExpanded はなく、最上位は TreeView.Items[] への格納状態によると言うことです。 1.3.Items の型 ノードをたどるには、Parent と Items[] を使います。 1.4.ItemControl TreeView も TreeViewItem も ItemControl を継承し、Items はここから来ています。 2.IreeViewItem はコントロールIreeViewItem は、単にツリー構造を表すコレクションではなく、コントロール(UIElement)です。 2.1.IreeViewItem の主要なプロパティ Headerにノードを表す表示文字列などを設定します。 2.2.Header Headerに、文字列を代入すれば、ノードを表すものとして TreeView に表示されます。 2.3.OnExpanded() のオーバライド注目するノードを展開表示するには、その親も展開する必要がありますが、自動的には展開してくれないようです。プログラムから開くには、OnExpanded() で、Parent の IsExpanded を設定すれば良さそうです。 2.4.マウスイベント処理のオーバライドノードのドラッグドロップでの移動は、自動的にはしてくれないようです。マウス関連のイベントをオーバライドして実現出来ました。 2.5.スタティックな変数の利用 当然ノードのインスタンスは、TreeViewのノードの数だけ出来ますが、最後に開いていたノードやドラッグドロップのターゲットなど、ノード全体を通じて一義の情報があります。 2.6.イベントのソース 表示されているノードを表す文字列をダブルクリックしたら、そのノードに関する処理をするわけですが、このイベントのソースが何かが良くわかりません。
|

