Uwp 是否支持查询选项且IsCommonFileQuerySupported始终为False

Uwp 是否支持查询选项且IsCommonFileQuerySupported始终为False,uwp,windows-10-universal,Uwp,Windows 10 Universal,我正在尝试编写一个应用程序,用于监视文件夹中的图片,并在文件夹中的照片更改时刷新。(如果有更好的方法,请告诉我。) 我正在尝试使用StorageFolders的CreateFileQueryWithOptions方法,以便将文件列表限制为图像并监视更改 var myPicsLibrary = await Windows.Storage.StorageLibrary.GetLibraryAsync(Windows.Storage.KnownLibraryId.Pictures); StorageF

我正在尝试编写一个应用程序,用于监视文件夹中的图片,并在文件夹中的照片更改时刷新。(如果有更好的方法,请告诉我。)

我正在尝试使用StorageFolders的CreateFileQueryWithOptions方法,以便将文件列表限制为图像并监视更改

var myPicsLibrary = await Windows.Storage.StorageLibrary.GetLibraryAsync(Windows.Storage.KnownLibraryId.Pictures);
StorageFolder photoFolder = await myPicsLibrary.RequestAddFolderAsync();
// Set options for file type and sort order.
List<string> fileTypeFilter = new List<string>();
//Todo : Do I need other file types?
fileTypeFilter.Add(".jpg");
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderByDate, fileTypeFilter);
因此,我无法使用查询来过滤结果

作为零件的文件

可用的特定选项取决于要枚举的文件或文件夹的位置。对于位于库或家庭组内的文件夹和文件,可以使用查询选项的任意组合

库或家庭组之外的文件夹和文件只支持选项的子集

您可以查看上述文档以获取详细信息

下面是文档场景2中的一个简单示例代码,用于枚举当前文件夹及其子文件夹(也称为深度查询)中的所有文件,并且
photoFolder
位于库之外的查询,您应该指定
CommonFileQuery.OrderByName
CommonFileQuery.OrderBySearchRank

var myPicsLibrary = await Windows.Storage.StorageLibrary.GetLibraryAsync(Windows.Storage.KnownLibraryId.Pictures);
StorageFolder photoFolder = await myPicsLibrary.RequestAddFolderAsync();
// Set options for file type and sort order.
List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".jpg");
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderBySearchRank, fileTypeFilter);

var result= photoFolder.AreQueryOptionsSupported(queryOptions);

谢谢,但是图片文件夹不是一个“图书馆”吗?正如我所说,即使我选择了实际的图片文件夹,它仍然会失败。@MatthewMcDermott当调用
RequestAddFolderAsync
方法时,它会提示用户选择一个文件夹,然后将该文件夹添加到库中。此文件夹的位置决定是否在库中。在我的测试中,如果我使用上面的代码,无论所选文件夹是否在库中,结果都将为真。我尝试了一个简单的新UWP项目,“添加”按钮并粘贴到代码中。我添加了照片库功能,并且您的代码在照片库上“起作用”。问题是我需要OrderByDate。当我更改您的查询时,同一库返回false。@MatthewMcDermott我已在回复中添加了更新部分,您可以检查它。
var myPicsLibrary = await Windows.Storage.StorageLibrary.GetLibraryAsync(Windows.Storage.KnownLibraryId.Pictures);
StorageFolder photoFolder = await myPicsLibrary.RequestAddFolderAsync();
// Set options for file type and sort order.
List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".jpg");
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderBySearchRank, fileTypeFilter);

var result= photoFolder.AreQueryOptionsSupported(queryOptions);
var myPicsLibrary = await Windows.Storage.StorageLibrary.GetLibraryAsync(Windows.Storage.KnownLibraryId.Pictures);
var folders = myPicsLibrary.Folders;
List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".jpg");

QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderByDate, fileTypeFilter);

foreach(var folder in folders)
{
    var result1 = folder.AreQueryOptionsSupported(queryOptions);
    var re1 = folder.IsCommonFileQuerySupported(CommonFileQuery.OrderByDate);
}