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