WP7 Kod örneği: Sayfalar arası veri transferi
Bugün ihtiyacım olan ve çözümünü bulduğum bir sorunu ve çözüm kodunu sizlerle paylaşmak istiyorum. Örneğin bir sayfamız var ve bu sayfanın adı MainPage.xaml olsun. Bu sayfamızı tasarladık ancak bu sayfadaki bazı değişkenleri bir diğer sayfamız olan PageDetay.xaml sayfasına aktarmamız gerekiyor, bunu nasıl yapacağız?
Öncelikle aktarmak istediğiniz değişkenleri belirleyin, eğer aktarmanız gereken veri miktarı çoksa kafanız karışmadan yapabilmek adına bunları kafanızda derlemek yararlı olacaktır.
Şimdi gereken kodlara ve açıklamalarına gelecek olursak bunları mümkün olduğunca açık vermeye çalıştım her düzeyden arkadaşın anlayabilmesi adına.
WP7 Code: How to transfer data between pages on Windows Phone 7
İngilizce olarak başlığımızı verip yabancı arkadaşlarımızın da bu konuya ulaşabilmesini sağladıktan sonra yazımıza başlayabiliriz. İlk olarak verilerimizin bulunduğu sayfa, yanş MainPage.xaml sayfamızda 2 değişkenimiz olduğunu varsayıyorum. Bu değerlerden birisi bir textBox1 objesi, bir diğeri ise bir string strMerhabalar değişkeni.
İlk olarak değişkenlerimizin bulunduğu sayfa olan MainPage.xaml sayfasından PageDetay.xaml sayfasına geçiş için bir link vermemiz gerekiyor. Bu link verme esnasında hangi verilerin gideceğini de belirteceğiz.
NavigationService.Navigate(new Uri(“/PageDetay.xaml?veri1=” + this.textBox1.Text + “&veri2=” + strMerhabalar, UriKind.Relative));
Bu alandaki “?veri1=” kısmı, kendisinden sonra gelen this.textBlox1.Text verisini diğer sayfaya aktarıyor. Daha sonra gelen “&veri2=” kısmı ise yine kendisinden sonra gelen strMerhabalar değişkeninin “içerisindeki veriyi” bir sonraki sayfaya iletiyor. Bir nevi web sitelerde kullanılan URL modeli. Burada ilk önce ?veri1= de “?” kullanmamızın sebebi ilk değişkeni aktarıyor olmamız. Daha sonraki “&veri2=” kısmı ise aktarılacak 2 ve daha fazla veri aktarımında kullanılacak. Yani biz 3 değişken göndermek isteseydik bu alana ek olarak “&veri3=veri” şeklinde bir ekleme yapacaktık.
Şimdi diğer kısma geçiyoruz, bu verileri aktardığımız sayfada bu verilerin yakalanmasına.
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
if (((this.NavigationContext.QueryString.ContainsKey(“veri1”)) || (this.NavigationContext.QueryString.ContainsKey(“veri2”)))
{
MessageBox.Show(this.NavigationContext.QueryString[“veri1”]);
MessageBox.Show(this.NavigationContext.QueryString[“veri2”]);
}
base.OnNavigatedTo(e);
}
Bu kodları da PageDetay.xaml sayfamızın cs kodları kısmına yazıyoruz herhangi istediğimiz bir yere (not: bu kod bir fonksiyon olduğundan bir event’in içine yazmamanız gerektiğini unutmayın).
Ardından bu kodumuzu test edip gerekli verileri alıp veriyoruz, gereken tüm işlemleri tamamlıyoruz.
Peki eğer derseniz ki bu kodu nerede kullanabilirim? Size fikir vereyim. Örneğin bir e-book uygulaması yazar, listbox içine sayfa numaralarını verirsiniz. Listbox click eventinin içine de tıklandığında yeni sayfaya sayfa numarasını aktararak gidersiniz. Daha sonra açılan PageDetay.xaml sayfasından da açılan sayfa numarasına göre gerekli if kontrollerini yaparak ilgili sayfanın yazılarını internetten çekebilir veya isolatedstorage kullanarak ekrana yazdırabilirsiniz, bu da böyle bi ufak proje önerisi olsun efendim 🙂
Biliyorum, aramızda çok tembeller var ve ben de o tembellerden biriyim, bu kodları yazmakla uğraşmak istemeyen arkadaşlar için Onur Tırpan – Hazır kodu indirdim isimli şarkı geliyor efendim, tamamiyle kurcalanmaya hazır projeyi indirmek için “tıklayınız (yonlendirmeOrnegi.zip)“.
Bunlar da örnek uygulamadan ekran resimleri:
"WP7 Kod örneği: Sayfalar arası veri transferi" yazısı için bir yorum yapılmış.
Bir cevap yazın
Yorum yapabilmek için giriş yapmalısınız.
merhaba onur bey,
blogunuzu ailecek takip ediyoruz (L)