Добавление CommandBindings в ContextMenus
У меня есть древовидная структура, которая содержит несколько различных типов узлов.
У каждого узла в дереве есть контекстное меню, которое создается динамически путем привязки его к массиву объектов ICommand в базовом ViewModel. Это работает нормально, и контекстное меню работает как ожидалось.
<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>
Однако для моих команд нет привязок команд, поэтому, когда я выбираю древовидный элемент, основные меню (т.е. вырезать / копировать / вставить) не меняются.
У меня вопрос, как мне добавить свои командные привязки к каждому элементу дерева?
Я полагаю, что могу связать их, но мне не удалось заставить это работать. Моя единственная другая мысль - создать / удалить привязки, когда древовидный элемент выбран / не выбран.
Я также был обеспокоен тем, что, если мне удастся привязать привязки команд непосредственно к дереву, тогда это может быть довольно ресурсоемким, если дерево будет большим? Намного лучше создавать и разрушать привязки, когда они необходимы?