在Windows应用商店应用程序中浏览用户库中的文件时,可以将文件或者文件夹分组显示,以便于进行分类浏览,这类似于音乐库中的文件可以按照艺术家名称、创建日期或者评级等多种方式进行分类。本节内容将会介绍如何对用户库中的文件进行分组。

下面以一个应用程序为例,介绍如何将图片库中的文件根据文件类型进行分组,并显示分组后的结果。

在Visual Studio 2012中新建一个Windows应用商店的空白应用程序项目,并命名为FileGroup。由于应用需要访问图片库,所以首先需要为应用开启图片库访问权限,双击打开项目的package.appxmanifest文件,选择其中的功能选项卡,勾选选项卡中的“图片库”选项,然后保存修改,设置结果如图13-5所示。

图13-5 启用图片库访问功能

从上面的介绍可以知道,本示例不只是对图片库中的文件根据类型的不同进行分组,还要把分组后的结果显示出来,为了实现这些功能,这里在MainPage.xaml文件的Grid元素中添加如下代码,添加一个用于显示文件名称的文本块。

<TextBlock x:Name="ShowTextBlock"  Margin="50,50" FontSize="20"/>

布局好前台界面后,下面来介绍后台功能的实现,在MainPage.xaml.cs文件中添加一个GroupFile方法用于实现图片库中文件的分组操作,具体实现代码如下所示:

private async void GroupFile()

{

    //获得图片库

    StorageFolder pictureFolder = KnownFolders.PicturesLibrary;

    StorageFolderQueryResult result  =   pictureFolder.CreateFolderQuery(CommonFolderQuery.GroupByType);

    //创建可变字符串对象

    StringBuilder builder = new StringBuilder();

//获取文件夹

    IReadOnlyList<StorageFolder> folderlist =  await result.GetFoldersAsync();

    foreach (StorageFolder folder in folderlist)

    {

        IReadOnlyList<StorageFile> filelist = await folder.GetFilesAsync();

        builder.Append(folder.Name + "(" + filelist.Count + ")"+"\n");

        foreach (StorageFile file in filelist)

        {

            builder.Append(" "+file.Name+"\n");

        }

    }

    ShowTextBlock.Text = builder.ToString();

}

方法首先通过KnownFolders类的PicturesLibrary属性获取图片库位置,为了根据文件夹中文件类型的不同进行相应的分组,接下来以CommonFolderQuery枚举的GroupByType成员作为参数,使用CreateFolderQuery方法创建代表分组查询结果的StorageFolderQueryResult类对象result,新建可变字符串builder,并通过GetFoldersAsync方法异步获取result中以文件类型命名的文件夹,将其保存在folderlist集合中,然后使用foreach循环遍历folderlist,调用GetFilesAsync方法获得每个类型文件夹中的所有文件,将文件夹的名称和其中包含文件的数量一同添加到builder中,并依次把各个文件的名称也添加到builder中,最后把builder转换成字符串形式赋值给ShowTextBlock文本块的Text属性,将文件夹和文件名称显示在文本块中。

除了代码中使用的GroupByType,CommonFolderQuery枚举还有其他12个枚举成员,包括GroupByMonth、GroupByAuthor等,这里不再一一列举。

为了能够在应用界面显示的同时显示文件夹和文件的名称,这里在MainPage构造方法中调用GroupFile方法。代码如下所示:

public MainPage()

{

    this.InitializeComponent();

    GroupFile();

}

运行程序,前台界面显示效果如图13-6所示:

图 13-6 图片文件分类效果图

从图13-6中可以看到,界面上显示了JPEG图像和PNG图像两个文件夹,在JPEG图像文件夹中含有三个扩展名为“.jpg”的图片文件,PNG图像文件夹中包含了两个扩展名为 “.png”的图片文件。

Windows Store App 用户库文件分组的更多相关文章

  1. Windows Store App 用户库文件夹操作

    上面介绍了与用户库文件有关的操作,包括创建.读写等,下面将介绍与用户库文件夹相关的操作. 与文件操作一样,想要对用户库文件夹进行操作,需要首先获取用户库的相应位置,获取的方法上面已经介绍过了,这里不再 ...

  2. Windows Store App 用户库文件操作

    (1)获取用户库位置 如果想要通过应用程序在用户库中创建文件,首先需要获得用户库中指定的位置,例如图片库.文档库等.这里值得注意的是,在获取用户库的位置之前,必须在Windows应用商店项目的清单文件 ...

  3. 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)

    这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...

  4. Windows Store App 过渡动画

    Windows Store App 过渡动画     在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...

  5. Windows store app[Part 3]:认识WinRT的异步机制

    WinRT异步机制的诞生背景 当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应.流畅的操作感变的十分重要. 在连接外部程序接口获取数据,操作本地数 ...

  6. Windows Phone App的dump 文件分析

    前言 我们在发布了自己的App以后,Windows Phone的Error Report机制会帮助我们收集程序的崩溃信息并发送到微软的服务器上,这可以辅助开发者提高App的稳定性. 那么如何利用这些d ...

  7. Windows store app[Part 4]:深入WinRT的异步机制

    接上篇Windows store app[Part 3]:认识WinRT的异步机制 WinRT异步机制回顾: IAsyncInfo接口:WinRT下异步功能的核心,该接口提供所有异步操作的基本功能,如 ...

  8. Windows Store App JavaScript 开发:获取文件和文件夹列表

    在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...

  9. Windows Store App JavaScript 开发:选取文件和文件夹

    前面提到过,文件打开选取器由FileOpenPicker类表示,用于选取或打开文件,而文件夹选取器由FolderPicker类表示,用来选取文件夹.在FileOpenPicker类中,pickSing ...

随机推荐

  1. Linux上F上传文件到FTP服务器

    Linux上上传跟Windows上上传不一样,在Windows上测试没问题,但是放到Linux服务器上跑,上传的文件中文显示乱码.解决方案: FtpUtil.java红色标记处 package cn. ...

  2. <<卸甲笔记>>-Oracle线下迁移到PPAS

    迁移原则 1.尽量保持Oracle与PPAS一致,这会使得日后应用程序迁移更为简单 2.迁移前检查PPAS中是否有同名帐号及同名的Schema a)如果有,建议考虑删除或改名 b)如果没有,先手工建立 ...

  3. Adobe CS6 全系列官方下载地址 (迅雷无效) Win Mac

    https://helpx.adobe.com/x-productkb/policy-pricing/cs6-product-downloads.html CS6 Design & Web P ...

  4. JS中对this的理解

    // this: 指的是调用 当前 方法(函数)的那个对象 <script> function fn1(){ this } 情况1:fn1()                  //这里t ...

  5. VC++6.0在Win7以上系统上Open或Add to Project files崩溃问题 解决新办法

    崩溃原因是和office高版本冲突,比如我64位win7装了64位office2013及visio就遇到了这个问题(我很纳闷,记得重装系统前装的是32位office2013及visio就未曾遇到该问题 ...

  6. 手机号码归属地查询api接口

    淘宝网 API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回:JSON ...

  7. 某篇ctr预估ppt的链接

    csdn上面有一篇ppt,但是下载分太贵了.里面东西看起来讲的还可以.看看能不能嵌入. http://download.csdn.net/detail/u012289698/9371461 <i ...

  8. Shell 语法之输入输出

    Linux 使用文件描述符标识每个文件对象.文件描述符是一个非负整数,可以唯一地标识会话中打开的文件.每个进程中最多可以有9个打开文件的描述符. Linux 标准文件描述符 文件描述符 缩写 描述 0 ...

  9. 聊天界面之进度条cell(一)

    ProgressCell用于显示文件传输的进度,困难点在于根据下载进度更新cell的进度条,先后尝试了几种方法: 1.有新的下载进度时,直接调用reloadData() 2.使用reloadRowsA ...

  10. CBUUID UUIDString unrecognized selector sent to instance 错误

    CBUUID UUIDString unrecognized selector sent to instance 错误 ios7.0,4s 蓝牙出现上述错误! 查看api可知,错误原因,由于CBUUI ...