Windows Phone 7 Isolated Storage
3.11.2011 14:45:25 | Okunma Sayisi : 9740 | Yorum Sayisi : 0Uygulamanız kapatıldığında ya da tombstone duruma geçtiğinde uygulamanın o anki durumunu kaydetmeniz gerekebilir ki uygulama daha sonra açıldığında kaldığı yerden devam edebilsin. Uygulama kapatıldığı zaman veri saklamak istiyorsak bunu disk üzerinde saklamamız gerekir ve Isolated Storage' ın da amacı budur. Isolated Storage, isminden de anlaşılacağı gibi izole edilmiş kalıcı bir depolama alanıdır. Yani cihazdaki bütün uygulamaların kullandığı depolama alanından izole edilmiş hatta işletim sisteminden de izole edilmiş bir alandır.
Bu örnekte, IsolatedStorageSettings nesnesinin ApplicationSettings isimli koleksiyonunda key/value pair (anahtar/değer ikilisi) depolamayı anlatmaya çalışacağım.
Visual Studio 2010 ile yeni bir Windows Phone Application açalım. İsim olarak wp_Isolated_Storage verdim. Aşağıdaki resimde göründüğü gibi 2 TextBlock, 2 TextBox, 1 ListBox ve 1 Button ekleyelim.
Button' un Name' ine btnKaydet, TextBox' ların Name' lerine txtAnahtar ve txtDeger verelim.
Ekran Tasarımı
MainPage.xaml.cs dosyasını açıp using' lere aşağıdaki namespace' i ekleyelim
using System.IO.IsolatedStorage;
Class seviyesinde IsolatedStorageSettings tipinde, isoAyarlari isminde bir değişken tanımlayalım.
private IsolatedStorageSettings isoAyarlari;
PhoneApplicationPage_Loaded metodu içerisini aşağıdaki gibi düzenleyelim.
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { isoAyarlari = IsolatedStorageSettings.ApplicationSettings; }
anahtarlariCek isminde bir metot yazalım.
private void anahtarlariCek() { txtAnahtar.Text = txtDeger.Text = String.Empty; listBox1.Items.Clear(); foreach (string key in isoAyarlari.Keys) { ListBoxItem itm = new ListBoxItem(); string yeniEleman = key + ": " + isoAyarlari[key]; listBox1.Items.Add(yeniEleman); } }
Bu metodun ne yaptığına bakacak olursak.
- Önce txtAnahtar ve txtDeger isimli TextBox' ların Text' lerini temizliyor.
- listBox1' in elemanlarını temizliyor.
- isoAyarlari ismini verdiğimiz dictionary' nin Key' leri (Anahtar) içerisinde foreach ile dönüyor.
- Her bir Key için yeni bir ListBoxItem instance' ı alıp, listBox' a bu Key' in (anahtar) ismini ve Value' sunu (değer) ekliyor.
anahtarlariCek isimli metodu Loaded metodu içerisinde çağıralım.
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { isoAyarlari = IsolatedStorageSettings.ApplicationSettings; anahtarlariCek(); }
Uygulama yüklendiği zaman, eğer IsolatedStorage içerisinde önceden eklemiş olduğumuz key/value ikilisi varsa, onları listBox' a dolduracak.
Kaydet butonuna tıkladığımız zaman txtAnahtar ve txtDeger isimli textBox' ların Text' lerindeki değerleri IsolatedStorage' a ekledikten sonra, bu değerleri listBox' a da ekliyoruz.
btnKaydet isimli butonun Click event' ini açıp, btnKaydet_Click isimli metodu aşağıdaki gibi düzenleyelim.
private void btnKaydet_Click(object sender, RoutedEventArgs e) { if (String.IsNullOrEmpty(txtDeger.Text) || String.IsNullOrEmpty(txtAnahtar.Text)) return; if (isoAyarlari.Contains(txtAnahtar.Text)) isoAyarlari[txtAnahtar.Text] = txtDeger.Text; else isoAyarlari.Add(txtAnahtar.Text, txtDeger.Text); anahtarlariCek(); }
Bu metodun ne yaptığına bakacak olursak:
- txtAnahtar ve txtDeger isimli TextBox' ların Text' leri null ya da empty ise return ile metottan çıkılıyor.
- isoAyarlari içerisinde txtAnahtar' ın Text' ini sahip bir Key varsa bu Key' in Value' sunu yeni değer ile güncelliyor.
- isoAyarlari içerisinde txtAnahtar' ın Text' ini sahip bir Key yoksa, txtAnahtar ve txtDeger' in Text' lerini isoAyarlari içerisine ekliyor.
- anahtarlariCek metodunu çağırarak, listBox' a bu verileri dolduruyor.
Uygulamayı çalıştırıp textBox' lara veri girip Kaydet butonuna basınca, bu veriler IsolatedStorage' a eklenecek.
Uygulamayı kapatıp tekrar açtığımızda, önceden kaydetmiş olduğumuz veriler, listBox' a dolacaktır.
Örnek uygulamanın kaynak kodlarını buradan indirebilirsiniz.
0 Yorum