我正在尝试遍历我的Treeview,扩展所有节点但是在运行时它会遇到InvalidCastException;
无法将'System.Data.DataRowView'类型的对象强制转换为'System.Windows.Controls.TreeViewItem'。
我的代码;
foreach (TreeViewItem treeitem in thetreeView.Items)
{
treeitem.IsExpanded = true;
}
有什么想法吗?我想从一个按钮开始。
答案 0 :(得分:13)
只需添加此款式
即可<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="True" />
</Style>
</TreeView.ItemContainerStyle>
代码请通过此链接可能这可以帮助你
答案 1 :(得分:4)
我找到了一个“Hackish”解决方案。 它不涉及继承,如建议的解决方案here(由 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));
}
}
}
}
我的解决方案基于this
答案 2 :(得分:0)
Bag of tricks有一个名为“TreeView Expand”的演示,它有一个树形视图,展开全部并折叠所有按钮(还有一些)