我对C#/ Entity Framework相对较新,我正在尝试使用Treeview控件/ HierachicalDataTemplate与Entity Framework 4.0一起工作,并且遗漏了一些内容。
我有一个自引用表:
divid(PK,int,not null); divname(nchar(100),not null); divshortname(nchar(50),not null); parentid(FK,int,null); ORGID (FK,int,not null)
我已将表格作为'orghierarchy'加载到实体框架中,并将自我关系'child'的多边命名为单边'parent'。
我创建了一个ObservableCollection:
private ObservableCollection<orghierarchy> _firstgeneration;
public ObservableCollection<orghierarchy> FirstGeneration
{
get
{
if (OrgID != 0)
{
_firstgeneration = SetDivTree(OrgID);
}
return _firstgeneration;
}
set
{
if (value != _firstgeneration)
_firstgeneration = value;
}
}
public ObservableCollection<orghierarchy> SetDivTree(int _orgid)
{
ObservableCollection<orghierarchy> _temp;
using (var context = new IFREntities())
{
var divs = from orghierarchies in context.orghierarchies.Include("child")
where orghierarchies.orgid == _orgid & orghierarchies.parentid == null
orderby orghierarchies.divshortname
select orghierarchies;
_temp = new ObservableCollection<orghierarchy>(divs);
}
return _temp;
}
“。include”似乎将所有子行返回到基于逐步执行代码的查询。
我的XAML
<TreeView x:Name="DivHierarchy" Margin="8" Grid.Row="5" Grid.Column="1" Grid.ColumnSpan="3" ItemsSource="{Binding FirstGeneration}" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding FirstGeneration.child}">
<TextBlock Text="{Binding divname}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<TreeView.Background>
<SolidColorBrush Color="{DynamicResource BigCtrlBackground}"/>
</TreeView.Background>
我的树视图是空的,我不确定问题是什么。
答案 0 :(得分:0)
尝试此XAML,不包括所需的所有布局设置。你可以自己做。 :)
<TreeView x:Name="DivHierarchy" ItemsSource="{Binding FirstGeneration}" ItemTemplate="{StaticResource RootTemplate}" />
将以下内容添加到参考资料部分,例如:
<Window.Resources>
<HierarchicalDataTemplate x:Key="ChildTemplate"
ItemsSource="{Binding Path=child}">
<TextBlock Text="{Binding Path=divname}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="RootTemplate"
ItemTemplate="{StaticResource ChildTemplate}"
ItemsSource="{Binding Path=child}">
<TextBlock Text="{Binding Path=divname}" />
</HierarchicalDataTemplate>
</Window.Resources>
我认为它会起作用,但您也会在根级别中看到子条目。好!试试吧。