Wpf 如何处理TreeView中项目的上下文菜单命令

Wpf 如何处理TreeView中项目的上下文菜单命令,wpf,mvvm,Wpf,Mvvm,我正在实现一个explorer类型的视图:左侧是一个树状视图,右侧是左侧所选项目的详细视图/编辑器视图 TreeView包含不同类型的“叶”对象。我已经定义了HierarchicalDataTemplates来定义如何显示对象以及应该显示哪个上下文菜单。菜单项具有绑定到视图模型的命令 我正在努力解决的是在哪里实现命令处理程序。直截了当的地方是“叶”视图模型,但他们不知道任何关于“资源管理器”视图模型以及如何打开详细信息/编辑器视图的信息 最简单的解决方案是将叶上下文菜单绑定到explorer视图

我正在实现一个explorer类型的视图:左侧是一个树状视图,右侧是左侧所选项目的详细视图/编辑器视图

TreeView包含不同类型的“叶”对象。我已经定义了HierarchicalDataTemplates来定义如何显示对象以及应该显示哪个上下文菜单。菜单项具有绑定到视图模型的命令

我正在努力解决的是在哪里实现命令处理程序。直截了当的地方是“叶”视图模型,但他们不知道任何关于“资源管理器”视图模型以及如何打开详细信息/编辑器视图的信息

最简单的解决方案是将叶上下文菜单绑定到explorer视图模型,因为这是执行操作的最佳位置


这通常是如何处理的?有什么“众所周知的”模式吗?

刚刚找到了这个问题的答案——这让我走上了正确的道路

UserControl
获取名称,命令绑定引用这个-
Source={x:Reference uc}

<UserControl x:Class="View.AdminWorkstationView" Name="uc">

<UserControl.Resources>
    <DataTemplate DataType="{x:Type vm:RequiredDeviceViewModel}">
        <DockPanel>
            <DockPanel.ContextMenu>
                <ContextMenu>
                    <MenuItem Command="{Binding DataContext.EditDeviceCommand, Source={x:Reference uc}}" 
                              CommandParameter="{Binding}"
                              Header="Edit device" />
                </ContextMenu>
            </DockPanel.ContextMenu>
        </DockPanel>
    </DataTemplate>

</UserControl.Resources>

Imho,您应该绑定到explorer视图模型,在您的情况下,它是“叶”视图模型的某种管理器。在我看来,这个解决方案没有错。