新時尚Windows8開發(4):儲存/讀取本地應用程式設定

來源:互聯網
上載者:User

老周的部落格專欄:http://blog.csdn.net/tcjiaan

轉載請註明原作者和出處。

 

 

啟動VS,開啟“物件瀏覽器”,我們來找一個東西。

在“物件瀏覽器”中找到Windows.Storage命名空間,並注意以下幾個類。

其中,我們要注意ApplicationData,看看它這名字,你也能猜到它是幹哪行的。很明顯,它一定與讀寫應用程式設定有關。

嗯,猜得沒錯,ApplicationData有一個靜態屬性——Current,不用多解釋,指的自然是我們當前啟動並執行應用程式。因此,我們就知道,要得到當前應用程式的ApplicationData,就通過該屬性。

好的,第一個問題解決,現在看第二個問題:如何儲存應用程式設定?如何讀取?其實這是一個問題,知道了如何儲存,自然就知道如何讀取了。

再看看LocalSettings屬性,它返回一個ApplicationDataContainer類的執行個體,這是一個容器,而且,一個應用程式的本地設定中,還可以包括N個容器,但每個應用程式也會帶有一個容器,所以,如果我們只是存取簡單的設定,不需要建立容器,就利用預設的設定容器即可。

ApplicationDataContainer類有個Values屬性,它返回一個IPropertySet介面,侈順著“物件瀏覽器”就能找到,它其實就是一個字典(Key - Value),所以說,“物件瀏覽器”非常有用,把它用好了,能為我們解決許多問題。

 

我相信,如果你的編程基礎修練得紮實的話,你不用往下看了,現在,你已經知道如何讀寫應用程式設定資訊了。

應用程式設定用來幹嗎?呵呵,這個不難理解,比如,我們的應用程式會提供一個“設定”頁面,讓使用者按照他的習慣進行設定,如使用者選擇了哪一套皮膚,或者他設定某頁面的資料,預設顯示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、現在,我們來運行一下。

運行,在右邊的列表中,隨便選擇一項,這時候,設定資訊已儲存。

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

 

等待應用程式結束後,我們再重新運行。這時候你會看到,ListBox當前選擇的項索引就是我們剛才儲存的索引值。

這樣,我們就達到讀寫設定的目的了。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.