网站发语音功能如何做/线下推广怎么做
C#递归获取文件夹下所有文件 并绑定到 TreeView控件中
- 一、代码片段
- 1、前端代码:
- 2、后端代码
- 二、使用用例
- 三、测试结果
- 1、测试数据视图:
- 1、包含原路径:
- 2、不包含原路径,只包含该路径下面内容:
- 2、 软件截图:
- 1、 包含原路径:
- 2、不包含原路径,只包含路径下面内容
导言:C#递归获取文件夹下所有文件 并绑定到 WPF TreeView控件中 代码片段
一、代码片段
1、前端代码:
<TreeView x:Name="BookMarkTree" SelectedItemChanged="BookMarkTree_SelectedItemChanged" BorderThickness="2" ><TreeView.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Children}"><StackPanel Orientation="Vertical"><TextBlock Text="{Binding Name}"></TextBlock></StackPanel></HierarchicalDataTemplate></TreeView.ItemTemplate>
</TreeView>
2、后端代码
//待绑定的数据节点
public class Node
{public string Name { get; set; }public List<Node> Children { set; get; }public Node(){Children = new List<Node>();}
}//递归获取文件并生成节点public Node GetChildren(DirectoryInfo directoryInfo)
{Node node = new Node() { Name = directoryInfo.Name };var subDirectory = directoryInfo.GetDirectories();var files = directoryInfo.GetFiles();if(files.Length !=0){foreach (var item in files){//获取文件名,去除后缀node.Children.Add(new Node { Name = item.Name.Replace(".html","")});}}if (subDirectory.Length != 0){foreach (var item in subDirectory){//连续迭代node.Children.Add(GetChildren(item));}}return node;
}//绑定treeview选择响应
private void BookMarkTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{TreeView treeView = (TreeView)sender;Node item = (Node)treeView.SelectedItem;//下面可以对 item 进行操作
}
二、使用用例
/* 包含原路径 */
//获取节点
DirectoryInfo directoryInfo = new DirectoryInfo("./Documents/Help/Pages");
List<Node> nodes = new List<Node>();
nodes.Add(GetChildren(directoryInfo));//为TreeView绑定 ItemsSource
BookMarkTree.ItemsSource = nodes;/* 只包含路径下面内容 */
DirectoryInfo directoryInfo = new DirectoryInfo("./Documents/Help/Pages");
List<Node> nodes = new List<Node>();//处理html文件
for(int i =0;i < directoryInfo.GetFiles().Length; i++)
{nodes.Add(new Node {Name = directoryInfo.GetFiles()[i].Name.Replace(".html", ""), Url = directoryInfo.GetFiles()[i].FullName });
}//处理文件夹
for (int i = 0; i < directoryInfo.GetDirectories().Length; i++)
{nodes.Add(getChildren(directoryInfo.GetDirectories()[i]));
}//为TreeView绑定 ItemsSource
BookMarkTree.ItemsSource = nodes;