2012-11-13 6 views
0

저는 C#/Entity Framework에 비교적 익숙하며 Entity Framework 4.0에서 작동하는 Treeview 컨트롤/HierachicalDataTemplate을 얻으 려하고 뭔가 부족합니다. (PK, INT, null이 아닌)Entity Framework를 사용한 Treeview 컨트롤

divId는;

나는 자체 참조 테이블이 divname (nchar (100), not null); divshortname (nchar (50), not null); parentid (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> 

내 트 리뷰가 비어 나는 문제가있을 수 있습니다 모르겠어요입니다.

+0

안녕하세요, @ DeeDub84 -이 작업을 수행하셨습니까? 그렇다면 나는 그 해답을 실제로 얻는다. 고마워 무리 :) 그것을 밖으로 일하길 바래. – Rachael

답변

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> 

나는 잘될 것이라고 생각하지만, 루트 레벨에서도 하위 항목을 볼 수 있습니다. 잘! 시도 해봐.

관련 문제