Привязка команд контекстного меню к ViewModel, который не находится в контекстном дереве визуалов
У меня есть TreeView, чьи элементы являются коллекцией моего класса Model. Я добавил контекстное меню в TreeView. Поскольку команды contextMenu должны быть в визуальном дереве, я должен был поместить их в свой класс Model. Что не так (привязка каталога к модели).
Как я могу привязать команду моего контекстного меню к моей модели представления, а не к модели?
Спасибо
1 ответ
Решение
Вам не нужно размещать команды в модели. Здесь вы можете получить доступ к своим командам во ViewModel, как показано ниже: Здесь Tag
будет содержать Binding to ViewModel и может использоваться для доступа к команде.
<TreeView Tag="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
<TreeView.ContextMenu>
<ContextMenu>
<MenuItem Header="MyCommand"
CommandParameter="{Binding }"
Command="{Binding Path=PlacementTarget.Tag.DataContext.MyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
</ContextMenu>
</TreeView.ContextMenu>
</TreeView>