WPF C#获取TreeView的根节点

时间:2010-08-18 15:57:29

标签: c# wpf treeview

我有一个通过HierarchicalDataTemplate绑定的TreeView

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

这就是我的TreeView:

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

现在我想获取第一个节点并将IsExpanded属性设置为false。

我试过这种方式

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

但我无法将Object强制转换回TreeViewItem以获取IsExpanded属性。

1 个答案:

答案 0 :(得分:6)

TreeView.Items是数据对象的集合,而不是TreeViewItems的集合。您可以使用ItemContainerGenerator来获取从数据对象到作为容器的TreeViewItem的映射。

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

如果您从数据对象而不是索引开始,则可以使用ContainerFromItem:

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