C# 使用Dropbox API在WPF中构建explorer树视图
嘿,我很难让我的treeview按照我想要的方式工作,目前它只是一个没有层次结构数据模板的treeview,这并不是我真正遇到的问题,但我不确定从哪里开始,让它展开文件夹,然后显示其中的文件/文件夹,等等。 目前,我的树视图只显示了整个文件列表 我正在visual studio 2019中使用Dropbox.API版本4.10 我的项目是一个.netcore 3.1桌面应用程序 这是我的获取文件方法C# 使用Dropbox API在WPF中构建explorer树视图,c#,wpf,xaml,dropbox,C#,Wpf,Xaml,Dropbox,嘿,我很难让我的treeview按照我想要的方式工作,目前它只是一个没有层次结构数据模板的treeview,这并不是我真正遇到的问题,但我不确定从哪里开始,让它展开文件夹,然后显示其中的文件/文件夹,等等。 目前,我的树视图只显示了整个文件列表 我正在visual studio 2019中使用Dropbox.API版本4.10 我的项目是一个.netcore 3.1桌面应用程序 这是我的获取文件方法 public async Task<ListFolderResult> GetFil
public async Task<ListFolderResult> GetFiles(string path)
{
using(var dropbox = new DropboxClient(_token))
{
var list = await dropbox.Files.ListFolderAsync(path, true);
while (list.HasMore)
{
list = await dropbox.Files.ListFolderContinueAsync(list.Cursor);
}
return list;
}
}
public异步任务GetFiles(字符串路径)
{
使用(var-dropbox=new-DropboxClient(_令牌))
{
var list=wait dropbox.Files.ListFolderAsync(路径,true);
while(list.HasMore)
{
list=wait dropbox.Files.ListFolderContinueAsync(list.Cursor);
}
退货清单;
}
}
这是树视图的xaml
<TreeView Margin="5" ItemsSource="{Binding Files.Entries}">
<TreeView.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}: {1}">
<Binding Path="Name"/>
<Binding Path="PathDisplay"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
这里是我的视图模型
public class ManageDropboxViewModel : ViewModelBase
{
private ListFolderResult _files;
private readonly DropboxService _dropboxService;
public ListFolderResult Files
{
get => _files;
set => Set(ref _files, value, "Files");
}
public async Task LoadDropbox()
{
Files = await _dropboxService.GetFiles("");
}
public ManageDropboxViewModel()
{
_dropboxService = new DropboxService();
var task = Task.Run((Func<Task>)LoadDropbox);
task.Wait();
}
}
公共类ManageDropboxViewModel:ViewModelBase
{
私有ListFolderResult_文件;
专用只读DropboxService\u DropboxService;
公共ListFolderResult文件
{
获取=>\u文件;
set=>set(参考文件,值,“文件”);
}
公共异步任务LoadDropbox()
{
Files=wait_dropboxService.GetFiles(“”);
}
公共管理器DropboxViewModel()
{
_dropboxService=新的dropboxService();
var task=task.Run((Func)LoadDropbox);
task.Wait();
}
}
这是可行的,但我将所有文件/文件夹都放在一个列表中。结果,我想要的是以一种我可以将其拆分的方式进行格式化,以便在树视图中显示我想要的格式
非常感谢您提供的任何帮助,因为我已经尝试了一段时间,试图获得某种结果。您可能希望将目录名设置为一个按钮。在click handler中,使用目录名调用LoadDropBox,然后将其传递给GetFiles。