我發現了一個「黑客」解決方案。 它不參與繼承類的解決方案建議here(由基肖爾·庫馬爾)
我添加了兩個按鈕 - 「關閉全部」和「全部展開」。
代碼背後:
private void btnCollapseAll_Click(object sender, RoutedEventArgs e)
{
foreach (var item in treeView.Items)
{
DependencyObject dObject = treeView.ItemContainerGenerator.ContainerFromItem(item);
CollapseTreeviewItems(((TreeViewItem)dObject));
}
}
private void btnExpandAll_Click(object sender, RoutedEventArgs e)
{
foreach (var item in treeView.Items)
{
DependencyObject dObject = treeView.ItemContainerGenerator.ContainerFromItem(item);
((TreeViewItem)dObject).ExpandSubtree();
}
}
private void CollapseTreeviewItems(TreeViewItem Item)
{
Item.IsExpanded = false;
foreach (var item in Item.Items)
{
DependencyObject dObject = treeView.ItemContainerGenerator.ContainerFromItem(item);
if (dObject != null)
{
((TreeViewItem)dObject).IsExpanded = false;
if (((TreeViewItem)dObject).HasItems)
{
CollapseTreeviewItems(((TreeViewItem)dObject));
}
}
}
}
我的解決方案是基於this
雖然我想這待辦事項在運行時,樹視圖的初始狀態應該被關閉。我的想法是有一個崩潰/展開所有按鈕。 – wonea 2010-07-13 09:29:11
因爲請閱讀這篇文章與例 http://bea.stollnitz.com/blog/?p=55 – 2010-07-13 09:30:47
同意。比衣的帖子涵蓋了這個基本面。 – 2010-07-13 09:58:29