我能够成功实现TreeView并将复杂数据绑定为ItemSource。我需要显示两个不同的上下文菜单。一个用于父节点,另一个用于子节点。我尝试了下面的代码,但它显示了所有节点的相同上下文菜单。
<TreeViewAdv Name="treeView" ShowRootLines="False" ItemsSource="{Binding TreeItems}">
<StackPanel Orientation="Horizontal">
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Add"/>
<MenuItem Header="Run All"/>
<MenuItem Header="Stop"/>
<MenuItem Header="Collapse All"/>
<MenuItem Header="Expand All" />
</ContextMenu>
</StackPanel.ContextMenu>
</StackPanel>
//此上下文菜单仅显示所有节点
<TreeViewAdv.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding SubItems}">
<StackPanel Orientation="Horizontal">
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Record"/>
<MenuItem Header="Run"/>
<MenuItem Header="Delete" />
</ContextMenu>
</StackPanel.ContextMenu>
<Rectangle Margin="0" Width="12" Height="12"/>
<TextBlock Margin="5 0" Text="{Binding Name}" VerticalAlignment="Center"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeViewAdv.ItemTemplate>
</TreeViewAdv>
请告诉我,如何单独显示父节点和子节点的不同上下文菜单?
由于
答案 0 :(得分:0)
如果根项和叶项由不同的视图模型类支持,则可以包含由DataType选择的多个HierarchicalDataTemplates:
<TreeView>
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding SubItems}" DataType="{x:Type local:RootViewModel}">
<StackPanel Orientation="Horizontal">
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Record"/>
<MenuItem Header="Run"/>
<MenuItem Header="Delete" />
</ContextMenu>
</StackPanel.ContextMenu>
<Rectangle Margin="0" Width="12" Height="12"/>
<TextBlock Margin="5 0" Text="{Binding Name}" VerticalAlignment="Center"/>
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding SubItems}" DataType="{x:Type local:ItemViewModel}">
<StackPanel Orientation="Horizontal">
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Jump"/>
<MenuItem Header="Sing"/>
<MenuItem Header="Doodle" />
</ContextMenu>
</StackPanel.ContextMenu>
<Rectangle Margin="0" Width="12" Height="12"/>
<TextBlock Margin="5 0" Text="{Binding Name}" VerticalAlignment="Center"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
上面的示例假定这些类是 RootViewModel 和 ItemViewModel 。