我有一个数据绑定的 TreeView。我想扩展 TreeViewItems 但只能说 3 的深度。
通常我会发出一个 TreeViewItem.ExpandSubtree() 但这会扩展所有内容,所以我自己制作了一个刺,因为它应该相当简单,对吧?
这是我尝试过的,我制作了下面的方法,然后将我的树视图 ItemContainerGenerator 以及树视图中的项目集合传递给它,深度为 3。
private void ExpandTree(ItemContainerGenerator gen, ItemCollection items, int depth)
{
depth--;
foreach (var item in items)
{
TreeViewItem itm = (TreeViewItem)gen.ContainerFromItem(item);
if (itm == null) continue;
itm.IsExpanded = true;
if(depth!=0 && itm.Items.Count > 0) ExpandTree(itm.ItemContainerGenerator,itm.Items,depth);
}
}
问题是它第一次为所有子项递归回调 ItemContainerGenerator 的状态为“NotStarted”,并且每次调用时都返回 null。当我捕获空值时,这意味着树只打开到 1 的深度,而不是我想要的 3。
我在这里想念什么?