2010-08-18 381 views
1

的我有一個是通過HierarchicalDataTemplateWPF C#獲取根節點的TreeView

 <HierarchicalDataTemplate x:Key="HierachrTree" DataType="{x:Type src:Ordner}" ItemsSource="{Binding UnterOrdner}"> 
       <TextBlock Text="{Binding OrdnerName}"/> 
    </HierarchicalDataTemplate> 

綁定這就是我的TreeView一個TreeView:

<TreeView Name="DokumentBrowser" ItemTemplate="{StaticResource HierachrTree}" 

現在我想要得到的第一個節點並設置IsExpanded屬性爲false。

我嘗試了這種方式

 ItemCollection ic = DokumentBrowser.Items; 
     TreeViewItem tvi = (TreeViewItem)ic.GetItemAt(0); 
     tvi.IsExpanded = false; 

,但我不能投的對象回到一個TreeViewItem得到IsExpanded屬性。

回答

6

TreeView.Items是數據對象的集合,而不是TreeViewItems的集合。您可以使用ItemContainerGenerator來獲取從數據對象到作爲容器的TreeViewItem的映射。

TreeViewItem tvi = 
    (TreeViewItem) DokumentBrowser.ItemContainerGenerator.ContainerFromIndex(0); 

如果你開始一個數據對象,而不是指數,那麼你可以使用ContainerFromItem:

TreeViewItem tvi = 
    (TreeViewItem) DokumentBrowser.ItemContainerGenerator.ContainerFromItem(
     DokumentBrowser.Items.GetItemAt(0)); 
+0

謝謝!這工作真的很好! – Mark 2010-08-18 16:35:22