WPF C#获取TreeView的根节点

Mar*_*ark 1 c# wpf treeview

我有一个通过HierarchicalDataTemplate绑定的TreeView

        <HierarchicalDataTemplate x:Key="HierachrTree" DataType="{x:Type src:Ordner}" ItemsSource="{Binding UnterOrdner}">
                <TextBlock Text="{Binding OrdnerName}"/>
    </HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)

多数民众赞成我的TreeView:

<TreeView Name="DokumentBrowser" ItemTemplate="{StaticResource HierachrTree}"
Run Code Online (Sandbox Code Playgroud)

现在我想得到第一个节点并将IsExpanded属性设置为false.

我试过这种方式

        ItemCollection ic = DokumentBrowser.Items;
        TreeViewItem tvi = (TreeViewItem)ic.GetItemAt(0);
        tvi.IsExpanded = false;
Run Code Online (Sandbox Code Playgroud)

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

Qua*_*ter 6

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

TreeViewItem tvi =
    (TreeViewItem) DokumentBrowser.ItemContainerGenerator.ContainerFromIndex(0);
Run Code Online (Sandbox Code Playgroud)

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

TreeViewItem tvi =
    (TreeViewItem) DokumentBrowser.ItemContainerGenerator.ContainerFromItem(
        DokumentBrowser.Items.GetItemAt(0));
Run Code Online (Sandbox Code Playgroud)