WPF, Windows Phone Command Binding Event Handling

WPF ve Windows Phone’da Command Binding İşlemiyle Event Handling

Aşağıdaki uygulama Windows Phone için yazılmıştır. Windows Phone, WPF/Silverlight altyapısı üzerine geliştirilmiş olduğu örnekte kullanılan bu özellik WPF ile geliştirilen masaüstü veya Silverlight ile geliştirilen web uygulamalarında da kullanılabilir.

NOT : Bu yazı Aykut TAŞDELEN’in C++ Java ve C# ile UML ve Dizayn Paternleri kitabından alıntıdır izinsiz kullanılıp alıntı yapılamaz ! Konunun devamı söz konusu kitapta yer almaktadır.

WPF’te event handling konusuna command patern’i bağlamında yeni bir boyut getirilmiştir. System.Windows.Input.ICommand interface’i ile command patern’i uygulanarak event handling işlemi gerçekleştirilebilir.

public interface ICommand

{

event EventHandler CanExecuteChanged;

bool CanExecute(object parameter);

void Execute(object parameter);

}

Command nesneleri bir eyleme ilişkin lojiği enkapsüle eder. Böylece uygulamanın çeşitli unsurları bir eylemi gerçekleştirmek istediğinde bunu ilgili command nesnesi yoluyla yapabilir. Aşağıdaki örnekte ICommand interface’inin gerçekleştirimi olan TestCommand sınıfı görülmektedir.

namespace WPhoneCommandBinding

{

public class TestCommand : System.Windows.Input.ICommand

{

public bool CanExecute(object parameter)

{

return true;

}

public event EventHandler CanExecuteChanged;

public void Execute(object parameter)

{

MessageBox.Show(“Test : ” + parameter);

CanExecuteChanged(this, new EventArgs());

}

}

}

Bu sınıfın Execute() metodu parametresine gönderilen bilgiyi mesaj kutusu içinde göstermektedir. Ancak bu sınıfa ait bir nesnenin kullanımı ve Execute() metoduna parametre gönderilişi oldukça ilginçtir zira XAML içerisinden dekleratif şekilde yapılmaktadır.

<phone:PhoneApplicationPage

xmlns:tst=”clr-namespace:WPhoneCommandBinding”>

<StackPanel>

<StackPanel.Resources>

<tst:TestCommand x:Key=”komut” />

</StackPanel.Resources>

<Button
Command=”{StaticResource komut}”
CommandParameter=”Deneme123″
Name=”btnTest” Content=”Test” />

</StackPanel>

</phone:PhoneApplicationPage>

XAML kodu incelenirse öncelikle WPhoneCommandBinding namespace’inin tst kısaltmasıyla tanımlandığı daha sonra buradaki TestCommand türünde komut isimli bir kaynak tanımlanıp bu kaynağın da daha sonra Button’un Command property’sine bind edilerek kullanıldığı görülmektedir. Örnek emülatörde çalışırılıp denendiğinde ise ekrana gelen mesaj kutusu içerisinde “Deneme123” metninin sunulduğu görülecektir.

Reklamlar