0

我想将上下文菜单添加到 TreeView。我可以通过以下代码做到这一点:

<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>

我该如何解决这个问题?

4

1 回答 1

0

我建议添加一个视图模型来包装您的 Class 类型,并在其上为 ContextMenu 创建一个属性。实例化这些视图模型以包装每个 Class 类型,并将 HierarchicalDataTemplate 中的 DataType 更改为新视图模型的类型。然后,您的 HierarchicalDataTemplate 中的标签可以绑定到 ContextMenu 属性,并且您可以从 TreeView 中删除 ContextMenu 绑定。它将显示在 Class 对象上,但不会显示在 Pupil 对象上。

于 2013-04-17T15:59:57.520 回答