2012-11-13 42 views
0

我是相對較新的C#/實體框架,並試圖獲得一個Treeview控件/ HierachicalDataTemplate與實體框架4.0工作,我缺少的東西。Treeview控件與實體框架

我有一個自引用表:

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」到實體框架,並命名自關係「孩子」和單面「父」的很多副作用。

我從而創造一個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> 

我認爲它會工作,但您也會在根級別看到子條目。好!嘗試一下。