XAML代码中有关TreeView的部分是这样的:
<TreeView x:Name="myTree" ItemsSource="{Binding nodes, Mode=TwoWay}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding nodes,Mode=TwoWay}">
<StackPanel>
<TextBlock Text="{Binding infoStr,Mode=TwoWay}"></TextBlock>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
在C#代码中,设置了TreeView的itemsSource为下面的一个对象:
public class TreeViewModel
{
public ObservableCollection<TreeViewModel> nodes { get; set; } // 子节点列表
public NodeInfo nodeInfo; // 本节点的信息
}
现在我要遍历TreeView去查找符合对应的TreeViewModel信息的节点,然后将焦点设置为该节点。但是我遇到了一个迟迟不能解决的问题:下面的这段代码总是返回null。
container.ItemContainerGenerator.ContainerFromIndex(i);
我查询了无数的资料,终于发现要TreeView的节点要展开才能获取到。但是在代码里加了UpdateLayout()让他去自动展开,返回还是null,而且节点并没有预期展开。有没有大佬能耐心解答一下?