ben

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

29 Ocak 2013 Salı

Mvvm' de keydownTrigger kullanımı

    
    Birçok otomasyon sisteminde  kullanılan barkod okuma yontemi aslında textbox gibi bir controle veri girişi ve enter'a basılmasından ibarettir tek farkı barkod cihazı bu işlemi otomatik yapar.

    Bazı projelerde karsımıza cıkmıstır. Normalde bu işlemi C# ta KeysEnter olayı karşılar fakat wpf te heleki mvvm de bunu karsılayabilecek hazır bir methodumuz yok. Bunun yerine yazılmıs bır fonksiyonumuz var bu class sınıfını projeye dahil ederek bu işlevi gercekleştirebiliriz.

   Örneğin bir firmada çalısanların barkodunu okuttuktan sonra isminin ekranda görülmesi işlemini  mvvm de tasarlayalım. View de tek bir textbox olsun.  yukarıdaki sınıfı kullanabilmak için xmlns kıamında tanımlamamız gerekli. Bu class nerede duruyorsa içinde bulunduğu bolum verilmeli. Kullandığım proje içerisine direk eklediğim içiin proje yi göstermem yeterli oldu.

xmlns:triggers="clr-namespace:M_takip"

Texbox xaml kodları;

<TextBox Text="{Binding Path=MAdSoyad,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" FontSize="14" Width="100" >
      <i:Interaction.Triggers>
         <triggers:KeyDownTrigger Keys="Enter">
             <ei:CallMethodAction TargetObject="{Binding}" MethodName="brkd"/>
         </triggers:KeyDownTrigger>
      </i:Interaction.Triggers>
</TextBox>

ViewModel kısmındaki property kodları;

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

ViewModel kısmındaki olay kodları;

public void  tarih_getir()
{
    if (MAdSoyad == "123456")                 
    {                       
       MAdSoyad = "Betül KOCA";                 
    }                 
   else 
   { 
       MessageBox.Show("Okutulan Barkod hatalı"); 
    }  
}

Bu sekilde Butona ihtiyac duymadan Barkod sistemi ile tek bir property kullanarak basit bir sorgulama yaptık. Veritabanına bağlı olduğunda kullanıcı sisteme girisi gibi alanlarda kullanılabilir. Sadece barkod olmasına da gerek yok, kullanıcı kodunu el ile girip enter' a bastığında da aynı işlev gerçeklenmiş olur. 

Hiç yorum yok: