将上下文菜单命令绑定到ViewModel,该命令不在上下文Visuals树中

时间:2013-09-17 04:14:39

标签: wpf xaml mvvm contextmenu

我有一个treeView,其itemsource是我的Model类的集合。 我在treeView上添加了一个上下文菜单。由于contextMenu的命令应该在可视树中,所以我不得不将它们放在我的Model类中。哪个错误(将模型绑定到目录)。

如何将我的上下文菜单命令绑定到我的ViewModel而不是Model?

由于

1 个答案:

答案 0 :(得分:5)

您无需在模型中放置命令。在这里,您可以在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>