さまざまなタイプのノードを含むツリービューがあります。
ツリー内の各ノードには、基になる ViewModel 内の ICommand オブジェクトの配列にバインドすることによって動的に作成されるコンテキスト メニューがあります。これは正常に機能し、コンテキスト メニューは期待どおりに機能します。
<TreeView Name="treeView1" ItemsSource="{Binding}" ItemTemplateSelector="{StaticResource defSelect}">
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu ItemsSource="{Binding Path=Commands}">
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
ただし、私のコマンドにはコマンド バインディングがないため、ツリービュー項目を選択してもメイン メニュー (切り取り/コピー/貼り付け) は変わりません。
私の質問は、コマンド バインディングを各ツリービュー アイテムに追加するにはどうすればよいですか?
それらにバインドできると思いますが、それを機能させることができませんでした。私の他の唯一の考えは、ツリービュー項目が選択/選択解除されたときにバインディングを作成/削除することです。
また、コマンドバインディングをツリービューアイテムに直接バインドできた場合、ツリーが大きい場合、これは非常にリソースを集中的に使用する可能性があることも懸念していましたか? 必要に応じてバインディングを作成および破棄する方がはるかに優れていますか?