win8開發(4)——保存/讀取本地應用程序設置

啓動VS,打開“對象瀏覽器”,我們來找一個東西。
在“對象瀏覽器”中找到Windows.Storage命名空間,並注意以下幾個類。

1.png 

其中,我們要注意ApplicationData,看看它這名字,你也能猜到它是幹哪行的。很明顯,

它一定與讀寫應用程序設置有關。

嗯,猜得沒錯,ApplicationData有一個靜態屬性——Current,不用多解釋,指的自然是

我們當前運行的應用程序。因此,我們就知道,要得到當前應用程序的ApplicationData,

就通過該屬性。

好的,第一個問題解決,現在看第二個問題:如何保存應用程序設置?如何讀取?其實這

是一個問題,知道了如何保存,自然就知道如何讀取了。

再看看LocalSettings屬性,它返回一個ApplicationDataContainer類的實例,這是一個

容器,而且,一個應用程序的本地設置中,還可以包括N個容器,但每個應用程序也會

帶有一個容器,所以,如果我們只是存取簡單的設置,不需要創建容器,就利用默認的

設置容器即可。

ApplicationDataContainer類有個Values屬性,它返回一個IPropertySet接口,侈順着“

對象瀏覽器”就能找到,它其實就是一個字典(Key - Value),所以說,“對象瀏覽器”

非常有用,把它用好了,能爲我們解決許多問題。

1.png 

我相信,如果你的編程基礎修練得紮實的話,你不用往下看了,現在,你已經知道如

何讀寫應用程序設置信息了。

應用程序設置用來幹嗎?呵呵,這個不難理解,比如,我們的應用程序會提供一個“

設置”頁面,讓用戶按照他的習慣進行設置,如用戶選擇了哪一套皮膚,或者他設置

某頁面的數據,默認顯示15條還是30條。

設置信息是比較簡單的數據,所以,我們就保存到本地設置中即可。

還有,上面提到了設置信息有容器,這個嘛,可以認爲將設置信息分組,就像我們在

設置存儲區建立了文件夾一樣。

也可以聯想一個註冊表,Windows系統的註冊表其實就是一個龐大的字典,它有鍵,

每個鍵對應一個值,但我們知道,註冊表是分組的,就像我們硬盤中保存的文件夾和文件一樣。

比如,註冊表的根會分爲HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE等等。

下面,我們一起來做一個練習,這樣我們不只是停留在理論上,動手操作一下吧。
1、啓動VS,新建一個項(此處省略39個字)。
2、打開MainPage.xaml,參考下面XAML代碼:

  • <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">  
  •     <Grid.ColumnDefinitions>  
  •         <ColumnDefinition Width="2*"/>  
  •         <ColumnDefinition Width="*"/>  
  •     </Grid.ColumnDefinitions>  
  •     <TextBlock Grid.Column="0" Margin="20" TextWrapping="Wrap">  
  •         <Span FontSize="36" Foreground="Pink" FontWeight="Black">示例說明</Span>  
  •         <LineBreak/>  
  •         <Run FontSize="24">  
  •             在右側的列表中選擇一項,然後掛起或退出應用程序;接着再運行應用程序。  
  •         </Run>  
  •         <LineBreak/>  
  •         <Run FontSize="24">  
  •             在作出選擇後,將選擇項的索引保存到設置中,當頁面初始化時,從設
  • 置中讀入之前選擇列表項的索引。  
  •         </Run>  
  •     </TextBlock>  
  •     <ListBox x:Name="MyListBox" FontSize="28" 
  • SelectionChanged="onSelectedChanged" Grid.Column="1">  
  •         <ListBoxItem>項目一</ListBoxItem>  
  •         <ListBoxItem>項目二</ListBoxItem>  
  •         <ListBoxItem>項目三</ListBoxItem>  
  •         <ListBoxItem>項目四</ListBoxItem>  
  •         <ListBoxItem>項目五</ListBoxItem>  
  •     </ListBox>  
  • </Grid>  

我相信不難理解,重點是ListBox,我們在其中隨意設置幾個項目,

並綁定其SelectionChanged事件。

3、在SelectionChanged事件上右擊,從彈出的菜單中選擇“定位到事件處理程序”,

這時候就轉到後臺代碼文件了。

4、我比較習慣用C#,所以,下面代碼爲C#代碼。

  • private void onSelectedChanged(object sender, SelectionChangedEventArgs e)  
  • {  
  •     ListBox lb = sender as ListBox;  
  •     if (lb != null)  
  •     {  
  •         if (lb.SelectedIndex > -1)  
  •         {  
  •             ApplicationDataContainer myContainer = ApplicationData.Current.LocalSettings;  
  •             myContainer.Values["index"] = lb.SelectedIndex;  
  •         }  
  •     }  
  • }  
代碼是不復雜的,重點我們是看一下如何保存設置。這裏,我們把當前選定項的索引保存。

5、當應用程序導航到本頁面時,我們就從設置中讀出剛纔保存的索引,

並把ListBox的選定項索引還原。


  • protected override void OnNavigatedTo(NavigationEventArgs e)  
  • {  
  •     ApplicationDataContainer container = ApplicationData.Current.LocalSettings;  
  •     if (container.Values.ContainsKey("index"))  
  •     {  
  •         this.MyListBox.SelectedIndex = (int)container.Values["index"];  
  •     }  
  •     else  
  •     {  
  •         this.MyListBox.SelectedIndex = 0;  
  •     }  
  • }  
在讀出設置前,一定要通過ContainsKey方法判斷一下,要找的鍵是不是存在的,只有存在纔將其值讀入。
6、現在,我們來運行一下。
運行,在右邊的列表中,隨便選擇一項,這時候,設置信息已保存。
1.png 

回到VS,在工具欄中的“調試位置”中,將程序“掛起並結束”。

2.png 

等待應用程序結束後,我們再重新運行。這時候你會看到,ListBox當前選擇的項索引就是我們剛纔保存的索引值。
這樣,我們就達到讀寫設置的目的了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章