私はデータバインドされているTreeViewを持っています。私はTreeViewItemsを拡張したいと思うが、3のような深さにしたい。WPFツリービュー特定の深さにのみ展開しますか?
通常は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の深さにはならないことを意味します。
私はここで何が欠けていますか?