TreeViewは、多くの作業をブラウザのDOMに任せているため、そのアーキテクチャは極めて単純です。
コントロールは完全なデータ連結です。itemsSourceプロパティはノードを表すデータ項目の配列を定義し、childItemsPathプロパティで定義される子要素が含まれる場合もあります。displayMemberPathプロパティは、ツリーノードに表示されるテキストを含む、項目内のプロパティの名前を定義します。
連結プロパティの1つが変更されると、itemsSource配列がスキャンされ、ノードを表すDOM要素が作成されて、DOMが生成されます。
仮想化は行われません。ユーザーがコントロールをスクロールしたり、ノードの折りたたみ/展開を行っても、DOM要素の数は一定のままです。TreeViewでは遅延ロードがサポートされており、特定のノードが展開されたときにデータをロードできるため、これは大きな制限になりません。
TreeViewには、itemsSource配列内の、現在選択されているデータ項目を取得または設定するselectedItemプロパティがあります。現在の項目をラップしているツリーノードを取得または設定するselectedNodeプロパティもあります。selectedNodeプロパティを使用して、選択項目の折りたたみ、展開、または移動を行うことができます。特定のデータ項目を表すノードへの参照を取得するには、getNodeメソッドを使用します。
ツリーを変更するには、itemsSource配列を変更し、loadTreeメソッドを呼び出してノードを再生成します。
さらに、TreeViewコントロールでは、次のキーボードコマンドがサポートされています。
キーの組み合わせ | アクション |
---|---|
上/下矢印キー | 前または次の可視ノードを選択します |
左矢印キー | 選択したノードに子ノードがある場合は折りたたみ、それ以外の場合は親ノードを選択します |
右矢印キー | 選択したノードに子ノードがある場合は展開します |
Home/Endキー | 最初または最後の可視ノードを選択します |
スペースキー | 現在のノードのチェックボックスを切り替えます(showCheckboxesプロパティを参照) |
他の文字キー | 入力したテキストを含むノードを検索します(複数文字の自動検索) |