在 WPF 中显示合并路径 - TreeView

问题描述 投票:0回答:1

我正在尝试使用 WPF 树视图实现非常具体的外观。

给定这样的结构:

H:
└── Programs
    └── Startup
        ├── foo.txt
        ├── bar.txt
        └── aaa
            └── baz.txt

我想这样显示:

H:\Programs\Startup
├── foo.txt
├── bar.txt
└── aaa
    └── baz.txt

就像 VSCode 一样:

我现在拥有的是

public class FSEntry
{
     public string Name { get; set; }
     public bool IsDirectory { get; set; }
     public ObservableCollection<FSEntry> Children { get; set; }
}

<TreeView Name="myTreeView" ItemsSource="{Binding RootEntries}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate DataType="{x:Type local:FSEntry}" 
                                  ItemsSource="{Binding Children, UpdateSourceTrigger=PropertyChanged}">
            <TextBlock Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

如果我的目标是第一个表示,它就可以正常工作。如果我想实现统一代表,我该从哪里开始?

c# wpf treeview
1个回答
0
投票

在我看来,你是通过望远镜的错误一端来看待这个问题的。

您实际上需要关注的是在数据中获取此特定结构(然后您可以将其用作 TreeView 控件的数据源)。

当您迭代文件夹结构时,如果一个文件夹恰好有一个子项目,并且该项目是另一个文件夹,那么您可以将文件夹名称组合成一个数据实体,否则只需照常添加子文件和文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.