0

我正在实现一个资源管理器类型的视图:左侧是 TreeView,右侧是左侧所选项目的详细信息视图/编辑器视图。

TreeView 包含不同类型的“叶子”对象。我已经定义了 HierarchialDataTemplates 来定义对象的呈现方式以及应该呈现哪个上下文菜单。MenuItem 具有绑定到视图模型的命令。

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

最简单的解决方案是将叶子上下文菜单绑定到资源管理器视图模型,因为这是最佳执行操作的地方。

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

4

1 回答 1

1

刚刚找到了这个问题的答案——在 DataTemplate 中绑定到父 DataContext——这让我走上了正确的轨道。

获取名称和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>
于 2013-07-12T11:40:23.603 回答