我有一个通过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属性.
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)