私はC#/ Entity Frameworkに比較的慣れておらず、Entity Framework 4.0で動作するTreeviewコントロール/ HierachicalDataTemplateを取得しようとしていますが、何かが欠けています。
私は自己参照テーブルを持っています:
除算 (PK、int、null 以外); divname (nchar(100), not null); divshortname (nchar(50)、null ではない); 親 ID (FK、int、null); orgid (FK、int、null 以外)
テーブルを「orghierarchy」としてエンティティ フレームワークにロードし、自己関係の多くの側を「子」、単一の側を「親」と名付けました。
次のように 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>
ツリービューが空で、何が問題なのかわかりません。