我发现了一个“黑客”解决方案。 它不参与继承类的解决方案建议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