應存儲的局域網管理工具數據在Storage文件夾的單獨類中定義。這樣就定義串行化需要的特性,獨立于把它們綁定到UI元素的類。為了串行化對象,串行化器和數據協(xié)定串行化器必須可用于Windows8應用程序。串行化使用局域網管理工具數據協(xié)定完成,所有Data Contract和Data Member特性應用與MenuCardData類(代碼文件Menu Card/Storage/MenuCardData.cs)。在這個類中,只為串行化定義了簡單的屬性Title、Description、ImagePath和一個MenuItemData集合。該類還實現一個接受Menu Card作為參數的構造函數,以及返回Menu Card的ToMenuCard方法,以便轉換為Menu Card類,或從Menu Card類轉換。
現在可以創(chuàng)建一個寫入Menu Card對象的方法了。應用程序可以在一些預定義的文件夾中寫入數據。這些文件夾可以用Application Data類訪問。ApplicationData Current返回Application Data單態(tài)對象的一個實例。之后就可以訪問Local Folder和RoamingFolder。LocalFolder屬性會返回針對應用程序的文件夾,該文件夾僅在本地系統(tǒng)上可用;RoamingFolder返回一個文件夾,在本地寫入數據后,該文件夾中的數據寫入一個云服務中,用戶在每個使用相同活動賬戶的系統(tǒng)上都可以訪問這些數據。
示例應用程序使用移動文件夾,這樣用戶就可以在所有的Windows8系統(tǒng)上使用這些數據了。WriteMenuCardAsync方法(代碼文件Storage/MenuCardStorage)通過參數menu Card接收一個Menu Card,訪問第一行上的移動文件夾。接著確定Menu Card對象自從一次寫入一來是否有變化。每次屬性改變時,MenuCard的改動(dirty)標記都會變化。在Storage Folder上調用CreateFileAsyne方法,創(chuàng)建一個文件,文件名包含菜單卡的標題。CreateFileAsync方法的第二個參數可以指定,如果文件存在,會發(fā)生什么??赡艿倪x項有拋出異常或打開已有文件。這里是僅覆蓋已有文件。接著把打開的文件盒菜單卡傳遞給方法WriteMenuCardToFileAsync。
WriteMenuCardToFileAsync方法最終在數據協(xié)定串行化器的幫助下寫入數據。StorageFile類提供的幾個方法會返回數據流,以讀寫數據——例如,OpenAsync返回一個IRandomAccessStream,Open Transacted sync返回一個StorageStreamTransaction。這些數據流都是Windows Runtime數據流。對于數據協(xié)定串行化,需要一個NET數據流。從這個方法返回的數據流獲取Memory Stream的一個副本,該副本在前面用DataContractSerializer填充了。
現在,只需要連接代碼,以便用UI保存菜單卡。保存操作的一個時間點是在AddMenuCardPage中創(chuàng)建新菜單卡時。退出頁面(例如單擊后退按鈕)時,會調用Save State方法(代碼文件Menu Card/AddMenuCardPage)。在OnNavigatedFrom方法中,SaveState由基類LayoutAwarePage類在退出頁面時調用。在這里的實現代碼中,從綁定到UI的信息中創(chuàng)建一個新的Menu Card,再調用WriteMenuCardsAsyns,將所有改動了的菜單卡寫入移動存儲器。
要讀取菜單卡,使用ReadMenuCardsAsync方法(代碼文件Menu Card/Storage/Menu Cards Storage’s)從應用程序的移動文件夾中讀取所有菜單卡文件,填充Menu Card對象,再返回一個列表。在讀取所有文件之前,先從移動文件夾中創(chuàng)建一組XML文件。StorageFolder類中的CreateFileQuery方法可以定義一個查詢,來搜索文件。這里定義的查詢指定不使用索引器,只是讀取這個目錄,不讀取子目錄,來搜索XML文件。通過Query Options類也可以使用關鍵字和屬性,利用Advanced Query Syntax搜索文件。從查詢中返回的文件使用一個從擴展方法OpenStreamForReadAsync中返回的NET數據流來讀取,接著,使用數據協(xié)定串行化器執(zhí)行反串行化。
Store State方法用于寫入應用程序狀態(tài),而Load State方法用于讀取應用程序狀態(tài)。下面的代碼展示了Main Page中的Load State方法,這個方法在導航到頁面時調用。這里調用ReadMenuCardsAsyne方法,以獲得Menu Card對象集合。這個集合放在Observable Collection中,再放在視圖模型中,將菜單卡用于與UI綁定的數據。
★關于WorkWin公司電腦監(jiān)控軟件★
WorkWin的使命是打造Work用途的Windows 電腦系統(tǒng),有效規(guī)范員工上網行為,讓老板知道員工每天在做什么(監(jiān)控包括屏幕、上網在內的一舉一動),限制員工不能做什么(禁止網購、游戲、優(yōu)盤等)。
WorkWin基于純軟件設計,非常容易使用,無需添加或改動任何硬件,使用一臺管理機監(jiān)控全部員工機電腦。歷經南京網亞十余年精心打造,此時此刻每天都有成千上萬企業(yè)電腦正在運行WorkWin,選擇WorkWin選擇“贏”。
WorkWin監(jiān)控首頁 短視頻講解 下載免費試用版
版權所有,南京網亞計算機有限公司 。本文鏈接地址: 局域網管理工具定義數據協(xié)定