Добавление CommandBindings в ContextMenus - PullRequest
0 голосов
/ 08 февраля 2011

У меня есть древовидная структура, которая содержит несколько различных типов узлов.

У каждого узла в дереве есть контекстное меню, которое создается динамически путем привязки его к массиву объектов 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>

Однако для моих команд нет привязок команд, поэтому, когда я выбираю древовидную структуру, основные меню (т.е. вырезать / копировать / вставить) не меняются.

У меня вопрос: как добавить привязки команд к каждому элементу дерева?

Я полагаю, что могу связать их, но мне не удалось заставить это работать. Моя единственная другая мысль - создать / удалить привязки, когда древовидный элемент выбран / не выбран.

Я также был обеспокоен тем, что если мне удастся привязать привязки команд непосредственно к дереву, то это может быть довольно ресурсоемким, если дерево будет большим? Намного лучше создавать и уничтожать привязки по мере необходимости?

...