Working with Isolated Storage’s in Wp7


Introduction:

In this article we are going to see what is Isolated Storage in Windows Phone 7 Development. Isolated Storage in Windows Phone 7 is something similar which we have with Silverlight. In Windows Phone 7 Isolated storage is space provided to store the data locally which is isolated from the other application. Each application can have their own space(storage) so that other application data cannot be shared with in the application which gives more security to the data. In case if we need to share the data then we can have Azure storages or any other cloud medium to share the data between the applications.

In Windows Phone 7 Development Isolated Storage can be used in 3 different ways to store the data like Storing data like Key-Value pair, Second type is using the Files and Folders to store the data in separate files, and lastly using the Relational data by using the local database. In Windows Phone 7 Architecture, we have all the files and folders are limited with access to the specific application itself by using the Isolated storage, which avoid the application to access other application data and vice versa. This architecture avoid data threat and provides security for the un authorised access to the data. Out of the three type of data storage we have to store in Isolated Storage File and Folder plays a vital role in most of the Windows Phone 7 Application development since we need to persist the user data locally in order to use it as and when required for online and offline mode

In this article we will see how to use the Key Value Pair option to store and retrieve the data using the Isolated Storage, this option uses the IsolatedStorageSettings Class to store the data. IsolatedStroageClass provides an effective way to store the data in Key Value pairs in a local IsolatedStorageFile. In Windows Phone 7 Application development, IsolatedStorageSettings is not thread safe so the application throws an IsolatedStorageException when the data Save is called. IsolatedStorageSetting class normally uses the below 3 methods to store and retrieve the data with the isolated storage.

  • Add - We can make use of this method to store the data in the dictionary as key value pair.
  • Remove - We can make use of this method to remove/delete the data with a specified key.
  • Contains - We can make use of this method to check if particular data is available or not using the specified key.

Let us now see the step by step process on how to use the IsolatedStorageSetting class to store the data in a key value pair.

Steps:

Open Visual Studio 2010 IDE and Create a new Silverlight for Windows Phone 7 Application with a valid project name as shown in the screen below.

image 1.jpg

Now let us add some control to get the user input and save it to the Isolated Storage. Also we will add some buttons to retrieve the data using the key and also we will add one more button to delete the data using the same key. So once we add our controls, we can see the page design as shown in the screen below.

image 2.jpg

XAML Code:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
 
<TextBlock Height="39" HorizontalAlignment="Left" Margin="12,67,0,0" Name="textBlock1" Text="Data" VerticalAlignment="Top" Width="106" TextAlignment="Center" />
  <TextBox Height="72" HorizontalAlignment="Right" Margin="0,42,17,0" Name="textBox1" Text="" VerticalAlignment="Top" Width="347" />
  <Button Content="Retrive" Height="72" HorizontalAlignment="Left" Margin="59,244,0,0" Name="button1" VerticalAlignment="Top" Width="160" />
  <Button Content="Delete" Height="72" HorizontalAlignment="Left" Margin="225,244,0,0" Name="button2" VerticalAlignment="Top" Width="160" />
  <Button Content="Save Data" Height="72" HorizontalAlignment="Left" Margin="59,166,0,0" Name="button3" VerticalAlignment="Top"   Width="326" />
 
<TextBlock Height="204" HorizontalAlignment="Left" Margin="73,355,0,0" Name="textBlock2" Text="" VerticalAlignment="Top"Width="299" />
</Grid>

First we need to add the Using directive to get the Isolated Storage class which is used to do the manipulations with the application. So copy the below Using directive to the code behind page.

using System.IO.IsolatedStorage;

Now let us start writing our code to use the IsolatedStorageSettings class, first we need to create an instance of the class and try to invoke the ADD Method to save the data. Copy the below code to the Save Data button control event as shown in the screen below.

-------image 3.jpg

Code Behind:--

using System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using System.Windows.Media.Animation;
using
System.Windows.Shapes;
using
Microsoft.Phone.Controls;
using
System.IO.IsolatedStorage; 
namespace
F5debugWp7IsolatedStorage
{
    public partial class MainPage : PhoneApplicationPage
     {
// Constructor
        public MainPage()
          {
              InitializeComponent(); 
          }
     private void button3_Click(object sender, RoutedEventArgs e)
      {
        IsolatedStorageSettings ISSetting = IsolatedStorageSettings.ApplicationSettings;
          if (!ISSetting.Contains("DataKey"))
             {
              ISSetting.Add("DataKey", txtSaveData.Text);
             }
          else
            {
                ISSetting["DataKey"] = txtSaveData.Text;
            }
          ISSetting.Save();
       }
    }
 }

In the above code we can see we have a key DataKey which is used to save the data which the user types in the text block. First we need to create an instance of the IsolatedStorageSettings and uses the instance to call the ADD method by passing the Key and the Value. Here we have provided with some validation to first check if the Key (DataKey) is already available or not if the data key is not available we make use of the SAVE Method to save the data to the Isolated Storage. Now let us write the code to retrieve the data using the key which we saved in the above code. To retrieve the data copy the below code the Retrieve button click event. To retrieve the data the key value pair is accessed directly from the applicationsettings property if the IsolatedStorageSettings as shown in the screen below.

image 4.jpg

Code Behind:
    

private void button1_Click(object sender, RoutedEventArgs e)

  {

     if (IsolatedStorageSettings.ApplicationSettings.Contains("DataKey"))

       {

         textBlock2.Text = "Key : DataKey || Value : ";
         textBlock2.Text += IsolatedStorageSettings.ApplicationSettings["DataKey"] as string;

       }

     else

       {

          textBlock2.Text = "Key Not Found";

       }

  }

Finally let us write the code to delete the data using the key (DataKey), here also we need to use the ApplicationSettings Property to access the data using the Key and delete it using the Remove method as shown in the screen below.

image 5.jpg

Code Behind:
private void button2_Click(object sender, RoutedEventArgs e)

{

   if (IsolatedStorageSettings.ApplicationSettings.Contains("DataKey"))

    {

       IsolatedStorageSettings.ApplicationSettings.Remove("DataKey");

    }

}

Now we are done with the code, we can build and execute the project by simply pressing the F5 button from the keyboard or use the Tool bar to select the Build and Execute solution. Once the application is build successful we can see the application opened in the Windows Phone 7 Emulator as shown in the screen below. We can play around with the application by adding the data and retrieving the data using the key which we assigned internally.

Output Screens:

image 6.jpg

Conclusion:

So in this article we have seen what Isolated Storage is in Windows Phone 7 Development and we have seen how to use the Key Value Pairs to save and retrieve the data effectively. In our upcoming tutorials we will see how to use the Files and Folders to save the data in the Isolated Storage.


Similar Articles