UWP解析Windows.Storage.StorageFolder并添加TreeView
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UWP解析Windows.Storage.StorageFolder并添加TreeView相关的知识,希望对你有一定的参考价值。
我想解析用户选择的StorageFolder并创建一个显示其树结构的TreeView。这是当我要求他选择一个文件时:
private async void browserPathGitDirButton_ClickAsync(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
FolderPicker picker = new FolderPicker();
picker.FileTypeFilter.Add("*");
folder = await picker.PickSingleFolderAsync();
if(folder != null)
{
parser.CreateTreeView(tree, folder);
tree.UpdateLayout();
}
}
在他选择之后,我称之为这种方法:
public void CreateTreeView(TreeView tree)
{
System.Diagnostics.Debug.WriteLine("root : " + root.Name);
TreeViewItem racine = new TreeViewItem { Header = root.Name };
racine.Tag = root.Path;
tree.Items.Add(ParseStorageAsync(root));
}
而这种方法也是:
public async Task<TreeViewItem> ParseStorageAsync(Windows.Storage.StorageFolder storage)
{
var dirNode = new TreeViewItem { Header = storage.Name };
//directories
foreach (var dir in await storage.GetFoldersAsync())
{
dirNode.Items.Add(ParseStorageAsync(dir));
}
//files
foreach (var file in await storage.GetFilesAsync())
{
TreeViewItem item = new TreeViewItem
{
Header = Path.GetFileNameWithoutExtension(file.Name),
Tag = file.Path
};
dirNode.Items.Add(item);
}
return dirNode;
}
如果我使用DirectoryInfo类而不是StorageFolder,它只能在WPF项目中工作,我必须做一个UWP项目。问题是它打印出来:
因为异步方法......
是否可以以其他方式解析UWP项目中的文件夹?
编辑:我的TreeView类是在Microsoft GitHub上编写的库,所以它运行良好,这不是问题。
答案
您正在向集合添加Task
而不执行它,您需要等待您的方法
tree.Items.Add(await ParseStorageAsync(root));
以上是关于UWP解析Windows.Storage.StorageFolder并添加TreeView的主要内容,如果未能解决你的问题,请参考以下文章
UWP 手绘视频创作工具技术分享系列 - SVG 的解析和绘制