ben

OMÜ , Bilgisayar Mühendisliği, 13'

29 Ocak 2013 Salı

Mvvm Control Bağlantıları


    Bir önceki yazımızda view sayfasına ıkı textbox ve bir buton yerleştirmiştik. Burda dikkat edilmesi gereken nokta controllerin bağlı olduğu property' nin içeriği değiştiği anda controlün text'ininde değiştiğidir. Bu nedenle olabildiğince her kontrole ayrı ayrı property tanımlamamız gerekli. denemeViewModel sayfasına gelelim Properties kısmında propertyleri tanımlacağız. mvvmprop yazarak iki defa tab tuşuna batığımızda propert otomatik olarak oluşmaktadır. Bise düşen isimlerini değiştirmek :)  örnek olarak property yapısı aşağıdaki gibi;

       private string _ad;     
       public string Ad     
      {         
           get { return _ad; }         
           set         
          {             
               _ad = value;             
                NotifyPropertyChanged(m => m.Ad);         
           }     
     }

    Burada iki çeşit değişken var ve belli bir yazım kuralı cvar tabiki istenildiği gibi değişken adı verilebilir ama bu ileride karışıklığa neden olabilir. Prıoperty değişkenine değer ataması yapacağımız zaman bu değeri Ad değişkenine atarız ve View deki conrolede bu değişkeni bağlarız Bu nedenle _ad ile Ad arasında bir farklılık olmalı.

  Birde bunun Soyad property'sini olusturalım. View de bulunan buton için bir olay tanımlamamız gerekli. Bu olayları ise ViewModel deki methods kısmında public void olarak olayları tanımlarız. Bizim butonumuz ad ve soyadı mesaj olarak ekranda göstersin.Bunun olayı;

public void MessajGonder()     
{         
       MessageBox.Show("Hosgeldiniz " + Ad + " " + Soyad);     
}

Gelelim View kısmından tanımladığımız property ve olaylara erişmeye. denemeView 'in xaml sayfasında text box'ı secelim.

<TextBox Text="{Binding Path=Ad,Mode=TwoWay}" FontSize="14"  VerticalAlignment="Top" Width="119" />

    Bağlantıyı Binding özelliği ile text kısmı içerisinde tanımladık. Path 'de tanımlanan Ad ile viewModeldeki tanımlanan değişken aynı olmalı. İkinci textbox'ıda bu şekilde olusturalım ve path kısmına Soyad yazalım.

  MessajGonder() olayını çağıracak olan butonumuzu aşağıdaki şekilde  güncelleyelim;

<Button Content="Giris"  FontSize="14" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="75" Grid.Column="1" >
            <i:Interaction.Triggers>                 
                  <i:EventTrigger EventName="Click">                      
                          <ei:CallMethodAction MethodName="MessajGonder" TargetObject="{Binding}" />
                </i:EventTrigger>            
            </i:Interaction.Triggers>         
</Button>

     EventName de tanımlı olan Click olayı değiştirilebilir ileriki yazılarda datagrid combobox gibi controllerde farklı olaylara method ekleyebilmeyi ve datagrid yada combobox' ın secili elamanını viewModele gönderebilme gibi işlemleri ayrıntılı bir şekilde yazmaya çalısacağım ama başlangıc olarak temel mantık budur. Programı çalıstırdığımızda butona tıkladığımızda  diğer wpf projeleri gibi çalısacaktır. Bu projenin tek farkı arayüz ile arayüz kodlamanın birbirinden ayrılması ve arayüzün istenildiği zaman modifiye edilmesi imkanının sağlanmasıdır.

Hiç yorum yok: