2012-01-09 3 views
1

まあ、私はこれを解決したと思った。私は単純にTreeViewItemのテンプレートを変更して、特定のノードが展開されたかどうかを無視しました。素晴らしく見える!しかし、それはちょうどそれ...それ見栄え!キーボードナビゲーションは、ノードが展開または折りたたまれているかのように応答します。常に展開されたツリービューを作成するにはどうしたらいいですか?

例えば、私がルートノードにいて、右矢印(何も動かない、そうしなければならない)を押すと、私はルートの最初の子に行きます。しかし、私がルートノードにいて、左へ(再び何も動かずに)ヒットすると、2番目のルートノードにジャンプし、最初のノードのすべての子ノードにジャンプします。

私たちが望む行動ではないことは言うまでもありません。私たちは単純に左右の矢印キーを呑み込むか、単にツリービューを完全に放棄してネストされたアイテムのプレゼンターに移動することができます(これはTreeViewの機能です)。しかし、私は全体を再作成する必要はありませんこの機能だけを制御します。思考?

答えて

0

TreeViewItemテンプレートでは、IsExpandedをtrueに設定できます。子要素がある場合は、すべてのアイテムを展開する必要があります。

あなたが見ているナビゲーションが設計通りであるため、残念なことに、これらのキーストロークを飲み込んで、必要なキーボードナビゲーションを取得する必要があります。

TreeViewから継承したカスタムツリービューを作成し、そのボタンイベントを再利用できるようにすることができます。

+0

どのボタンイベントですか? – MarqueIV

+0

KeyDown特にユーザーがキーを押したときに発生するその他のキーイベント。ちょっと考えた後、itemtemplatesを持つアイテムを持つListBoxでより優れたサービスを提供できるように思えます。 ListBoxがサポートしているナビゲーションを探しています。グループを崩壊させることはありません。子オブジェクトには、通常のツリービューに表示される水平オフセットを複製するためのマージンなどがあります。 – CodeWarrior

+0

リストボックスを入れ子にする問題は、すべてのコントロールがそれぞれのフォーカススコープとタブナビゲーションなどであり、それらをすべて1つとして扱うのではなくリストボックスの間にあるので、さらに悪いことです。私は、TreeViewItemのIsExpandedの変更された通知プロパティを購読して、それが真のままであることを確認するだけで良いことを推測しています。) – MarqueIV

関連する問題