我有一个 treeView,它的 itemsource 是我的 Model 类的集合。我在 treeView 上添加了一个上下文菜单。由于 contextMenu 的命令应该在可视化树中,所以我不得不将它们放在我的 Model 类中。这是错误的(模型的绑定目录)。
如何将上下文菜单的命令绑定到我的 ViewModel 而不是模型?
谢谢
我有一个 treeView,它的 itemsource 是我的 Model 类的集合。我在 treeView 上添加了一个上下文菜单。由于 contextMenu 的命令应该在可视化树中,所以我不得不将它们放在我的 Model 类中。这是错误的(模型的绑定目录)。
如何将上下文菜单的命令绑定到我的 ViewModel 而不是模型?
谢谢
您不需要在模型中放置命令。在这里,您可以访问 ViewModel 中的命令,如下所示: 这里Tag
将包含与 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>