2010-08-18 377 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