我对 C# / Entity Framework 比较陌生,正在尝试让 Treeview 控件 / HierachicalDataTemplate 与 Entity Framework 4.0 一起使用,但我缺少一些东西。
我有一个自引用表:
除法(PK,int,不为空);divname(nchar(100),不为空);divshortname(nchar(50),不为空);parentid (FK, int, null); orgid (FK, int, not null)
我已将表作为“组织结构”加载到实体框架中,并将自我关系的多面命名为“子”,将单面命名为“父”。
我因此创建了一个 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>
我的树视图是空的,我不确定问题可能是什么。