Entity framework 具有导航属性EntityFramework的TreeView HierarchicalDataTemplate
我有三个具有一对多关系的链接实体(类别->类型->类)。 是否可以仅绑定Categories实体,并使用导航属性和HierarchycalDataTemplate表示其余实体?Entity framework 具有导航属性EntityFramework的TreeView HierarchicalDataTemplate,entity-framework,treeview,Entity Framework,Treeview,我有三个具有一对多关系的链接实体(类别->类型->类)。 是否可以仅绑定Categories实体,并使用导航属性和HierarchycalDataTemplate表示其余实体? 我想象这样的情况: <TreeView ItemsSource="{Binding Categories}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSour
我想象这样的情况:
<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>
我最近在一个WPF项目中完成了这项工作,我更新了类型以匹配您的姓名和导航属性
您可能想考虑将类型/类更改为更具体的,因为它们被用作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>
这将做的是,它将匹配树中的数据类型-如果它匹配类别
,它将创建stackpanel,然后使用导航集合类型
启动另一个分支
对于类型
,它将执行相同的基本操作-为该项目创建面板,然后为其导航集合类
创建另一个分支
如果它是
类
,它将只创建面板,因为它是数据模板
,而不是层次数据模板
,我最近在一个WPF项目中完成了这项工作,我更新了类型以匹配您的姓名和导航属性
您可能想考虑将类型/类更改为更具体的,因为它们被用作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>
这将做的是,它将匹配树中的数据类型-如果它匹配类别
,它将创建stackpanel,然后使用导航集合类型
启动另一个分支
对于类型
,它将执行相同的基本操作-为该项目创建面板,然后为其导航集合类
创建另一个分支
如果它是
类
,它将只创建面板,因为它是数据模板
,而不是层次数据模板
是伪代码吗?您没有设置数据类型和其他内容。WPF还是winforms?不管怎样,从概念上讲,这都是可行的,但您的实现有点不成功:)谢谢,我的实现只是一个草案,因为我仍在寻求可能性。是的,您绝对可以做到!有这样有用的ex或文章吗?或者你能用一个通用的模式来回答吗?这是伪代码吗?您没有设置数据类型和其他内容。WPF还是winforms?不管怎样,从概念上讲,这都是可行的,但您的实现有点不成功:)谢谢,我的实现只是一个草案,因为我仍在寻求可能性。是的,您绝对可以做到!有这样有用的ex或文章吗?或者你能用一般的模式来回答吗?--这是一个很棒的答案。但是如何将这些HierarchycalDataTemplate
s添加到树的ItemsSource中,而不显示错误“ItemTemplate设置了多次”?谢谢--这是一个令人敬畏的答案。但是如何将这些HierarchycalDataTemplate
s添加到树的ItemsSource中,而不显示错误“ItemTemplate设置了多次”?谢谢