Ø 讀寫檔案

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

21151645_OSEw  

圖22.1 設置頁面展示了每條記錄的設置,允許將其應用到以後新建的記錄中

設置頁面如圖22.1所示,允許對記錄的前景色、背景色和字體大小進行自訂。雖然這些設置只應用於當前的記錄(被設置為Note實例的屬性),但是使用者可以通過使用check box將選擇的設置自動應用到以後新建的記錄中。

為了融合color picker,把一個鍵值直接寫入隔離存儲空間的應用設置中,這裡使用了TempScreenColor 和 TempTextColor。然後,這些值被用於OnNavigatedTo函數的目前記錄屬性中。


原文連結:HTTP://www.cnblogs.com/dearsj001/archive/2012/08/10/101App4WP7_NOTEPAD.html

 

創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()