1

我有三个具有一对多关系的链接实体(类别-> 类型-> 类)。是否可以仅绑定类别实体并使用导航属性和表示其余实体HierarchicalDataTemplate
我想象这样的事情:

<TreeView ItemsSource="{Binding Categories}">

            <TreeView.ItemTemplate>

                <HierarchicalDataTemplate ItemsSource="{Binding Categories}" >
                    <TextBlock Foreground="Red" Text="{Binding Types}" />

                    <HierarchicalDataTemplate.ItemTemplate>
                        <HierarchicalDataTemplate ItemsSource="{Binding Classes}">
                            <TextBlock Text="{Binding TypeName}" />

                            <HierarchicalDataTemplate.ItemTemplate>
                                <DataTemplate >
                                    <TextBlock Text="{Binding ClassName}" />
                                </DataTemplate>
                            </HierarchicalDataTemplate.ItemTemplate>

                        </HierarchicalDataTemplate>

                    </HierarchicalDataTemplate.ItemTemplate>

                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>

        </TreeView>
4

1 回答 1

1

我最近做了这个,在一个 WPF 项目中,我更新了类型以匹配你的名字和导航属性。

您可能需要考虑将 Type/Class 更改为更具体的内容,因为它们在 c# 语言中用作关键字,但我认为您明白了

  <!-- The Root Category Table -->
           <HierarchicalDataTemplateDataType="{x:Type Entities1:Categories}" ItemsSource="{Binding Types}" >
              <StackPanel Orientation="Horizontal">
                 <Image Name="img" Source="{Binding ., Converter={Converters:DataTypeImageConverter}}" />
                 <TextBlock Text="{Binding CategoryName}" FontWeight="Bold" />
              </StackPanel>
           </HierarchicalDataTemplate>
           <!-- Your Type Table -->
           <HierarchicalDataTemplate DataType="{x:Type Entities1:Type}"  ItemsSource="{Binding Classes}" >
              <StackPanel Orientation="Horizontal">
                 <Image Name="img" Source="{Binding ., Converter={Converters:DataTypeImageConverter}}" />
                 <TextBlock  Text="{Binding TypeName}" />
              </StackPanel>
           </HierarchicalDataTemplate>
           <!-- Your Class Table-->
           <DataTemplate DataType="{x:Type Entities1:Class}">
              <StackPanel Orientation="Horizontal">
                 <Image Name="img" Source="{Binding ., Converter={Converters:DataTypeImageConverter}}" />
                 <TextBlock Text="{Binding ClassName}" />
              </StackPanel>
           </DataTemplate>

这将做的是,它将匹配树中的数据类型 - 如果匹配Category,它将创建堆栈面板,然后使用导航集合启动另一个分支Types

因为types,它会做同样的基本事情——为该项目创建面板,然后为它的导航集合创建另一个分支Class

如果是class,它只会创建面板,因为它是 a DataTemplate,而不是 aHierarchicalDataTemplate

于 2012-08-30T14:53:22.413 回答