前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《101 Windows Phone 7 Apps》读书笔记-NOTEPAD

《101 Windows Phone 7 Apps》读书笔记-NOTEPAD

作者头像
ShiJiong
发布2018-01-10 17:32:22
5560
发布2018-01-10 17:32:22
举报

课程内容

Ø 读写文件

    Notepad提供了快速、高效的记录手段,它具有以下的特点:

Ø 自动保存,使得速记变得快速而简单。

Ø 提供每条笔记的快速预览。

Ø 可自定义每条笔记的背景色、前景色和字体大小。

Ø 可通过Email发送笔记文件。

    这听上去熟悉吗?应该够熟悉吧,因为对于用户来说,除了主密码和相关的加密算法,这个应用与之前的Passwords & Secrets几乎如出一辙。但是,在实现过程中,有一个不同之处显得非常重要,这也正是本章需要讲述的。因为Notepad存储的记录相对于Passwords & Secrets来说,需要更加长久一点。每条记录都以独立文件的形式存放在隔离存储空间中,这使得应用程序可以根据需求加载记录,而非每次在应用程序启动/激活时全部加载(在应用程序设置中是这样的)。

    本章突出Notepad与Passwords & Secrets应用程序中代码之间的差异,展示共同使用的设置页面的设计。

The Main Page

    Notepad的主页面和之前Passwords & Secrets的主页面很像,只是少了LoginControl这个自定义空间和相关的逻辑。一开始,应用程序栏就具有一个“new”按钮,因为任何情况下,都可以增加新的记录。

注意:

➔在OnNavigatedTo中,通过把页面的数据内容设置为记录列表,完成了list box的数据填充。

➔本章最后讲述的Note类,为了适应以文件为基础的存储方式,与上一章的略微有所不同。在NewButton_Click事件处理程序中,我们可以发现它现在具有Filename属性,它被用来指向包含数据的文件。在应用程序的界面中,文件名是不会出现的;从内部来讲,每条记录只要知道去哪里获取数据就可以了。因此,在创建一条新记录时,它被赋予一个唯一的文件名,这要归功于Guid.NewGuid方法,它为所有的实际需求返回全局唯一标识符(GUID)。

The Details Page

Details页面和Passwords & Secrets一样,显示记录的内容,允许用户对其进行编辑、删除操作,改变设置,或者通过Email发送记录内容。除了应用程序栏的IsVisible属性设置为False之外,该页面的XAML代码与前一章的DetailsPage.xaml相同,因为LoginControl显示的时候,它没有必要隐藏。

注意:

➔ 在OnNavigatedFrom函数中,text box中的内容通过SaveContent方法保存到一个文件中,这会在本章后面进行详述。每条记录的Title属性是在这个时候进行设置的,而并不是在获取时动态设置的,因为这样做可以不用读取每个文件来显示每个title的值。否则的话,把列表内容保留在主页面会导致应用程序需要每个文件的内容,并且丧失了将记录存放于文件的优势。

➔ 归功于Note类中定义的GetContent方法,记录的内容会在OnNavigatedTo函数中立即显示。

➔ 在DeleteButton_Click函数中,DeleteContent方法确保记录被删除时,其存储的文件也同时被删除。

The Note Class

➔ 之前提及过,Title属性目前是普通的read-write属性,是动态可变的,而非read-only。

➔ 为保存一个新的文件,SaveContent方法首先调用IsolatedStorageFile. GetUserStoreForApplication。这是在任何代码中直接与隔离存储空间文件系统交互的第一步。IsolatedStoreFile返回的实例中包含创建、枚举、打开和删除文件及文件夹的方法。CreateFile方法一旦被调用,SaveContent就会使用StreamWriter把传入的字符串写入stream中。

➔ GetContent 和 DeleteContent与SaveContent类似,利用了IsolatedStorageFile中的另外三个方法:FileExists, OpenFile, 和 DeleteFile。为了在读写大文件的时候,保持用户界面的可交互性,可以使用第11章“XAML Editor”中介绍的BackgroundWorker。

➔ 在管理文件时,我们有可能使用IsolatedStorageFile.GetFileNames方法来枚举并显示文件,但该方法存在一些问题,比如:

➔ 隔离存储空间的API并没有包含发现创建/修改文件日期的方法。因此,通过这种方法来进行文件排序(而不使用默认的字符排序)会需要存储额外的信息(本应用存放于Note类中)。

➔ 如果我们使用隔离存储空间的应用设置,那么列表会包含一个额外的文件。这些信息会被保存在一个叫做ApplicationSettings的XML文件中,该文件位于应用程序隔离存储空间的根目录。虽然我们可以手动将其过滤掉,但不能确保将来不会有其他特殊的文件。

➔ 和Windows一样,文件名也有一定的字符限制(例如,不能包含冒号或者问号)。如果将文件名作为用户可见并可以编辑的标签,那么我们需要确保没有引入无效的字符。

The Settings Page

image
image

图22.1 设置页面展示了每条记录的设置,允许将其应用到以后新建的记录中

    设置页面如图22.1所示,允许对记录的前景色、背景色和字体大小进行自定义。虽然这些设置只应用于当前的记录(被设置为Note实例的属性),但是用户可以通过使用check box将选择的设置自动应用到以后新建的记录中。

    为了融合color picker,把一个键值直接写入隔离存储空间的应用设置中,这里使用了TempScreenColor 和 TempTextColor。然后,这些值被用于OnNavigatedTo函数的当前记录属性中。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-08-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档