如何将目录中的文件夹名称加载到可观察的集合?

时间:2018-07-29 11:00:37

标签: c# uwp

我正在开发一个将包含图像的Zip文件提取到应用程序本地文件夹并称为主题的应用程序。

我的应用程序中有一个ObservableCollection。在主页中,我有以下代码:

public ObservableCollection<Theme> Themes = new ObservableCollection<Theme>();

在班上我有这个:

public class Theme
{
    public string ThemeName { get; set; }
    public BitmapImage IconImgSource { get; set; }

    public DynamicWallpaper(string name, BitmapImage imgSource)
    {
        this.ThemeName = name;
        this.IconImgSource = imgSource;
    }
}

我需要做的是进入以下目录后:

StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFolder themeFolder = await localFolder.GetFolderAsync("Themes");

用于扫描子文件夹的名称,并将该文件夹的名称与指示该文件夹的图像一起添加到observablecollection中。

Themes.Add(new Theme(addedTheme.Name, new BitmapImage(new Uri(addedTheme.Path + "/Thumnail_Day.png"))));

addedTheme.Name是文件夹的名称(无路径)

如何通过按一下按钮将“主题文件夹”中的所有文件夹加载到可观察的集合中?

1 个答案:

答案 0 :(得分:3)

您需要使用QueryOptions,这将使您可以查询文件夹中的子文件夹/文件。

首先获得对您的themeFolder的引用(就像您在上面所做的一样)

现在创建一个QueryOption对象并像这样使用它:

var queryOption = new QueryOption {FolderDepth = FolderDepth.Deep};
var themeSubFolders = await themeFolder.CreateFolderQueryWithOptions(queryOption).GetFoldersAsync();

现在您有了子文件夹列表,然后可以将其添加到ObservableCollection