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