遍历ObservableCollection以动态扩展嵌套项目

时间:2018-10-05 10:46:00

标签: c# wpf

我正在基于树形视图的文件浏览器上创建一个default文件夹功能,这使系统根据默认路径on load打开文件夹。

如您所知,您需要使用IsExpanded函数来打开treeviewitem

我的问题是我不知道如何使其自动通过每个文件夹并展开,直到到达默认路径(可以设置为任何路径)。

这是非常糟糕的代码(该代码不是动态代码,而且味道不好): bad code for the expander

运行上述代码即可实现(在运行时):

Folder view

要澄清这个问题:该代码闻起来不是动态的,是否有更简单的方法,然后循环遍历每个文件夹以找到一个文件夹,展开该文件夹,然后进入该文件夹并进行相同的操作东西吗?

我很乐意在此问题中添加任何可以帮助您的问题,并回答愿意帮助的人。

谢谢大家!

1 个答案:

答案 0 :(得分:3)

您可以使用递归方法:

private void Expand(DirectoryItemViewModel dvm)
{
     dvm.IsExpanded = true;
     foreach(DirectoryItemViewModel item in dvm.Children)
         Expand(item);
}

使用方式:

foreach(DirectoryItemViewModel item in Items)
     Expand(Item);