我想在TreeView中添加一个contextmenu。我可以通过以下代码来完成:
<TreeView x:Name="treeView" Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Classes}"
commandBehaviors:MouseDoubleClick.Command="{Binding TreeMouseDoubleClick}"
commandBehaviors:MouseDoubleClick.CommandParameter="{Binding ElementName=treeView, Path=SelectedItem}"
Margin="3,3,3,3" ContextMenu="{Binding ContextMenu, Mode=OneWay}">
...
我的TreeView只有两个级别。班级和学生。
我现在的问题是,我的TreeView有一个HierarchicalDataTemplate,如果右键单击在一个类节点上,我只想显示contextMenu
这看起来像
<HierarchicalDataTemplate DataType="{x:Type Entity:Class}" ItemsSource="{Binding Pupils}">
<Label Content="{Binding Name}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type Entity:Pupil}">
<Label Margin="0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="{Binding Lastname}" Margin="0"/>
<Label Grid.Column="1" Content="{Binding Firstname}" Margin="0"/>
</Grid>
</Label>
</DataTemplate>
我该如何解决这个问题?
答案 0 :(得分:0)
我建议添加一个视图模型来包装你的Class类型,并为它创建一个ContextMenu属性。实例化这些视图模型以包装每个Class类型,并将HierarchicalDataTemplate中的DataType更改为新的视图模型的类型。然后,HierarchicalDataTemplate中的标签可以绑定到ContextMenu属性,您可以从TreeView中删除ContextMenu绑定。它将显示在Class对象上,但不显示在Pupil对象上。