首页 > 解决方案 > 循环通过 ObservableCollection 动态扩展嵌套项

问题描述

我在default基于树视图的文件资源管理器上创建了一个文件夹功能,这使系统根据默认路径打开文件夹on load

如您所知,您需要使用该IsExpanded功能来打开treeviewitem.

我的问题是我不知道如何让它自动遍历每个文件夹并展开直到它到达默认路径(可以设置为任何内容)。

这是非常糟糕的代码(不是动态的并且闻起来很糟糕): 扩展器的错误代码

运行上面的代码实现(在运行时):

文件夹视图

为了澄清这个问题:这段代码有异味并且不是动态的,是否有更简单的方法,然后循环遍历每个文件夹以找到一个文件夹,展开它,然后进入该文件夹并做同样的事情?

我很高兴在这个问题中添加任何可以提供帮助的内容,并回复任何愿意提供帮助的人。

谢谢你们!

标签: c#wpf

解决方案


您可以使用递归方法:

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

像这样使用它:

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

推荐阅读