【Windows Phone8】隔離儲存區

【Windows Phone8】隔離儲存區

前言:

 

在做App時會有經常使用變數,但有時第一頁也要使用它而第二頁也會使用到,

這時用傳參數的方式可以解決這種問題,但假如你的專案下有兩個子專案,

或跨多頁才使用的參數那就變的很麻煩了,這時使用隔離儲存區儲存參數就不用考慮這麼多麻煩了。

 

 

在開始實作前簡單介紹將使用的功能

1.在儲存隔離區中加入資料

IsolatedStorageSettings.ApplicationSettings["索引名稱"] = "值";

2.加入資料後要儲存才有效

IsolatedStorageSettings.ApplicationSettings.Save();

3.清除

IsolatedStorageSettings.ApplicationSettings.Clear();

以下就開始做個小範例。

 

實作:

 

Step-1 為了測試方便先建立四個ApplicationBarIconButton

程式碼如下:

 


private void BuildLocalizedApplicationBar()
        {
            // 將頁面的 ApplicationBar 設定為 ApplicationBar 的新執行個體。
            ApplicationBar = new ApplicationBar();

            // 建立新的按鈕並將文字值設定為 AppResources 的當地語系化字串。
            ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/add.png", UriKind.Relative));
            appBarButton.Text = "加入";
            ApplicationBar.Buttons.Add(appBarButton);

            ApplicationBarIconButton appBarButtonshow = new ApplicationBarIconButton(new Uri("/Assets/AppBar/upload.png", UriKind.Relative));
            appBarButtonshow.Text = "顯示";
            ApplicationBar.Buttons.Add(appBarButtonshow);

            ApplicationBarIconButton appBarButtondelete = new ApplicationBarIconButton(new Uri("/Assets/AppBar/delete.png", UriKind.Relative));
            appBarButtondelete.Text = "刪除";
            ApplicationBar.Buttons.Add(appBarButtondelete);

            ApplicationBarIconButton appBarButtongo = new ApplicationBarIconButton(new Uri("/Assets/AppBar/next.png", UriKind.Relative));
            appBarButtongo.Text = "跳頁";
            ApplicationBar.Buttons.Add(appBarButtongo);

            appBarButton.Click += appBarButton_Click;
            appBarButtonshow.Click += appBarButtonshow_Click;
            appBarButtondelete.Click += appBarButtondelete_Click;
            appBarButtongo.Click += appBarButtongo_Click;
        }

 

Step-2 在各個ApplicationBarIconButton中設定觸發事件

 

程式碼如下:

 

 


void appBarButtongo_Click(object sender, EventArgs e)
        {
            NavigationService.Navigate(new Uri("/Page.xaml", UriKind.Relative));
        }

        void appBarButtondelete_Click(object sender, EventArgs e)
        {
            if (IsolatedStorageSettings.ApplicationSettings.Contains("ID"))
            {
                IsolatedStorageSettings.ApplicationSettings.Clear();
                MessageBox.Show("資料刪除成功");
            }
            else
            {
                MessageBox.Show("無資料可刪除");
            }
            
        }

        void appBarButtonshow_Click(object sender, EventArgs e)
        {
            try
            {
                MessageBox.Show(IsolatedStorageSettings.ApplicationSettings["ID"].ToString());
            }
            catch
            {
                MessageBox.Show("無資料");
            }
            
        }

        void appBarButton_Click(object sender, EventArgs e)
        {
            if (IsolatedStorageSettings.ApplicationSettings.Count==0)
            {
                IsolatedStorageSettings.ApplicationSettings["ID"] = "Test";
                IsolatedStorageSettings.ApplicationSettings.Save();
                MessageBox.Show("加入成功");
            }
            else
            {
                MessageBox.Show("已加入");
            }
        }

 

執行結果:

當按下加入後,跳至第二頁資料依然還在。

ADD_thumb[1]Page-2-show_thumb[1]

註:只要不清除隔離儲存區內資料,就算關閉應用程式後資料依然存在測試圖如下。(慎用)

Back_thumb1Clear_thumb1Data_thumb2