已展开所有WPF树视图项
我试图在我的树状视图中迭代,扩展所有节点,但它在运行时会遇到InvalidCastException 无法将“System.Data.DataRowView”类型的对象强制转换为“System.Windows.Controls.TreeView”类型 我的代码已展开所有WPF树视图项,wpf,treeview,c#-4.0,Wpf,Treeview,C# 4.0,我试图在我的树状视图中迭代,扩展所有节点,但它在运行时会遇到InvalidCastException 无法将“System.Data.DataRowView”类型的对象强制转换为“System.Windows.Controls.TreeView”类型 我的代码 foreach (TreeViewItem treeitem in thetreeView.Items) { treeitem.IsExpanded = true; } 有什么想法吗?我想从一个按钮启动它。只需添加此样式即可 &l
foreach (TreeViewItem treeitem in thetreeView.Items)
{
treeitem.IsExpanded = true;
}
有什么想法吗?我想从一个按钮启动它。只需添加此样式即可
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="True" />
</Style>
</TreeView.ItemContainerStyle>
对于代码,请通过此链接可能是这可以帮助你
有一个名为“TreeView Expand”的演示,它有一个带有“全部展开”和“全部折叠”按钮的树视图(还有更多)我找到了一个“黑客”解决方案。
它与所建议的解决方案不同(由Kishore Kumar提出)
我添加了两个按钮——“全部折叠”和“全部展开”
代码隐藏:
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));
}
}
}
}
我的解决方案基于虽然我希望在运行时执行此操作,但树视图的初始状态应该是关闭的。我的想法是有一个折叠/扩展的所有按钮。为此,请阅读本文并给出示例。Bea的帖子涵盖了这个的基本原理。是的,我看过了。我有点困惑,试着从头开始写些东西。