2010-12-19 13 views
3

マウスでうまく動作するDataBound(HierachicTemplates経由)WPF TreeViewがありますが、キーボードでそれを駆動できるようにします。私はContextMenu項目が 'ジェスチャー'を介して実行できるようにCommandBindingsを追加しました。 CTRL + Deleteのように現在選択されている項目を削除したいのですが、コンテキストメニューを表示するための 'Properties'キーと、ユーザーがカーソルキーを使用してナビゲートできるようにすることです。キーボードを使用してデータバインドされたWPFツリービューのコンテキストメニューを表示

私はCommandBindingを作成してデバッグしましたが、RoutedUIEventにはContextMenuがあります。私はXmal Resourcesからそれを作成しようとしましたが、うまくいきましたが、すべてが無効になっているので、明らかに正しくありません。

キーボードでナビゲートできるWPF ContextMenuを作成するにはどうすればよいですか?

答えて

2

私はこのようなコントロールののContextMenuを表示するために管理:

  • は(名前または任意の方法で)あなたのコントロールを取得し、ハンドラ内
  • ごKeyboardEventのために(例えばダウンプロパティキーを)聞く
  • あなたがコントロールを持っているときは、次のようにしてください:myControl.ContextMenu.IsOpen = true;

希望します。

+0

これがTreeViewだと試してみましたが、ツリー内のノードでContextMenuを持たないTextBlock要素でイベントが発生しました。これは何か高いもの(視覚的な木?)に縛られているようです。 contextMenuはTreeViewリソースです。 TextBlockにコンテキストメニューを配置しようとしましたが、それは役に立たないようです。 – Robert

+0

ここでの問題は、contextMenuをどのように設定するかという私の意見です。イベントがtextBlockで発生した場合は、このContextMenuプロパティが設定されているツリービューで、このテキストブロックの最も近い親を検索し、contextMenuをこのコントロールに設定してからイベントが発生したら、あなたのTextBlockからvisualTreeを取得し、この親コントロールを取得し、私が示唆したように "ContextMenu.IsOpen = true"を実行します。私はこれを行う簡単な方法はありません。 – David

関連する問題