在家庭组中使用子文件夹

时间:2013-03-06 10:36:17

标签: c# .net asynchronous windows-8 microsoft-metro

我正在尝试构建一个metro应用程序,该应用程序将从同一家庭组中的另一台计算机加载图像文件(所有计算机都使用带有工作组的Windows 8 x64)。我找到的所有样本都不使用子文件夹或使用filepicker。 由于我的所有图像都在同一个文件夹中,而且我知道它们的名字,所以我不想使用filepicker。 我在appxmanifest中激活了“图片库”,我可以列出家庭组中的目录/计算机,但我一直在打开文件或子文件夹。

这就是我的所作所为:

var folder = await Windows.Storage.KnownFolders.HomeGroup.GetFolderAsync("homegroupname");

foreach (var a in await folder.GetFoldersAsync())
{
    Debug.WriteLine(a.Name.ToString());
}

这给了我一个家庭组计算机的列表(如预期的那样)。

这是我尝试过的没有成功的事情:

folder = await Windows.Storage.KnownFolders.HomeGroup.GetFolderAsync(@"homegroupname\computername");
folder = await folder.GetFolderAsync(@"computername");

这些尝试没有奏效,我的想法也用尽了。我必须在某个地方允许该文件夹吗?我打开(子)文件夹的方式是正确的吗?

1 个答案:

答案 0 :(得分:0)

我用以下(几乎直观的)方法做到了: 我为正确类型的文件创建一个CommonFileQuery,并选择一个具有拟合名称的文件。

List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".jpg");
fileTypeFilter.Add(".png");
var queryOptions = new QueryOptions(CommonFileQuery.OrderByDate, fileTypeFilter);

var query = KnownFolders.HomeGroup.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> fileList = await query.GetFilesAsync();
StorageFile file = fileList.FirstOrDefault(x => x.Name == "123_123.jpg");