Bu yazımızda parametreli ve parametresiz olarak sayfalar arası nasıl veri aktaracağız ve ya sayfalar arası nasıl geçiş yapacağız buna değineceğiz.

Aslında sayfa yönlendirme web sitelerindeki işleme benzer. URL olarak web tarayıcısına yazdığınız url adresini bizler bir kontrolün işleyiş yani kod kısmına yazıyoruz. Hemen boş bir Windows phone projesi oluşturalım.

1744201020141651021744

 

SayfalarArasiGecis adında oluşturulan projede default olarak tanımlanan MainPage.xaml sayfası sizi karşılıyor olacaktır. Bu sayfa phone uygulamaları için hem tasarım hem de kodlama yapacağınız bir ara yüzdür. Bu sayfa xaml kodlarının yer aldığı ve arka planda C# kodlarının bulunduğu PhoneApplicationPage sınıfından türetilen bir sayfadır.

Windows Phone için çeşitli navigasyon metodları bulunmaktadır. Biz bu metodları override ederek gerekli yerlerde kullanacağız.

  • OnNavigatingFrom : İlk sayfadan ikinci sayfaya giderken ilk sayfada çalışacak kodlarımızı bu metod içine yazarız.
  • OnNavigatedFrom : İlk sayfadan ikinci sayfaya giderken ikinci sayfanın onload metodu çalıştığı anda İlk sayfada çalışacak olan kodları yazacağımız metod
  • OnNavigatedTo : İlk sayfadan ikinci sayfaya geçtiğimizde ikinci sayfa yüklenirken çalışacak olan kodlarımız.
  • OnBackPress : Sayfada geri butonuna bastığımızda çalışacak olan kodlar yani donanımsal olarak telefonun geri butonuna basarak gidebileceğimiz metoddur.

7165201020141651317165

 

Yukarıda MainPage.xaml sayfasında bir textbox ve birde buton kontrolunu koyduk. TextBox kontrolumüzün adını x:Name=”txtYazi” ve buton kontrolumüzün adını x:Name=”btnGit” şeklinde tanımladık. BtnGit butonumuzun properties penceresinden eventler ve oradan da click metodunu tanımladıktan sonra sizi MainPage.xaml.cs sayfasına yönlendirecektir.

private void btnGit_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/Page1.xaml?Parametre=" + txtYazi.Text, UriKind.Relative));
}

Şimdi projemize Page1.xaml diye bir ek sayfa oluşturalım. Bu sayfada bir TextBlock kontrolümüzü ekleyelim ve adını da txtBGelenYazi şeklinde yapalım.
7025201020141651467025

Ardından Page1.xaml sayfamızın c# ekranına klavyemizin F7 tuşuyla gidelim ve burada onNavigatedTo metodunu override edelim.

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            string gelenVeri = NavigationContext.QueryString["Parametre"];
            txtBGelenYazi.Text = gelenVeri;
            base.OnNavigatedTo(e);
        }

MainPage sayfasındaki txtYazi kontrolümüzün içeriğini burada gelenVeri değişkenimize atıyoruz. Sonra bu sayfadaki txtBGelenYazi kontrolümüze gelen veriyi aktarıyoruz. Artık MainPage.xaml sayfamızdan Page1.xaml sayfamıza veri taşıma olayını gerçekleştirdik. Eğer sadece diğer sayfaya yönlenmek istiyorsak yani veri taşımadan bir sonraki sayfaya yönelmek istiyorsak bunu da bir örnekle açıklayalım. Yukarıdaki kod blogunu parametre olmadan şimdi tekrar yazıyorum.

private void btnGit_Click(object sender, RoutedEventArgs e)
       {
           NavigationService.Navigate(new Uri("/Page1.xaml, UriKind.Relative));
       }

Böylece MainPage.xmal sayfasından Page1.xaml sayfasına yönderildik.

Peki bulunduğumuz sayfadan geri ye nasıl gidebiliriz bunu da aşağıdaki kodla açıklayalım. Şimdi Page1.xaml sayfasına bir buton yerleştirip ve click metodunun içine kodları yazalım.

private void Button_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.GoBack();
        }

Bir önceki sayfaya gitmek istediğimiz bunu telefonun geri tuşuyla da yapabiliriz. Bunun için Page1.xaml sayfasında aşağıdaki resimde bulunan kod parçasını eklemeniz yeterli. Yani <phone:PhoneApplicationPage ….. > etiketi arasında BackKeyPress=”PhoneApplicationPage_BackKeyPress” kodunu yazacaksınız. Böylece geri tuşuna basınca ne yapmasını istiyorsak şimdi o koda bakalım.

7192201020141652427192

 

private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel = true;
            //yapılacak kodlar
        }

Böylece telefonunuzun geri tuşuna basılınca ne yapılmasını istiyorsanız bu kodları buraya yazabilirsiniz.

Written by Sümeyra Akbıyık
hakkımdaki her şeyi bu blogda bulabilirsin. Haydi sende bir göz gezdirmeye ne dersin?

Leave a Comment