19 Haziran 2008 Perşembe

WPF Event Modeli ve Routed Event

WPF Event Modeli ve Routed Event
WPF içerisinde event’ları(olay) oluşturmak herhangi bir .NET Teknolojisiyle(Windows Forms veya ASP.NET) aynı şekildedir. Bu event’lara örnek olarak butonun tıklanması, textBox’a text girilmesi, listBox’dan eleman seçilmesi v.s. sayılabilir.

WPF de olay yöneticilerini(event handler). çift yönlü tanımlanır. Önce, ASP.NET veya Windows Form’lar da olduğu gibi XAML kod içerisine bildirim deyimi eklenir. Daha sonra yapılan bildirime göre kod dosyası içerisinde (örneğin xaml.cs,xaml.vb) olay prosedürü oluşturularak event handler tanımlanır. Bu event handler tanımlama işlemi ASP .NET’deki tanımlama(code-behind) işlemine oldukça benzerdir.

Aşağıda ki örnekte buttonun click olayı için event handler oluşturma işlemini yapalım.
Önce xaml içerisinde bildirim işlemini yapalım.

Daha sonra xaml.cs dosyasında code behind yöntemi ile event handler’ı oluşturalım.

Şimdi ise gelelim asıl meselemize. WPF ile beraber gelen yeniliklerden biri olan routed event’dan bahsedelim.

Routed Event

WPF birleşik kontrolleri hızlaca tasarlayabilmenizi ve olaylarını kolayca yönetebilmenizi sağlamak amacıyla routed eventlar’ı sunar.

Routed event, sadece kontrol üzerindeki event’ı tetiklemek yerine, root kontrole bağlı tetiklenen child kontrolle beraber root kontrolun de handler’larını başlatan bir olaydır.

3 çeşit routed event vardır Bunlar;
  • Direct Event : Direct Event, tek kaynak üzerinden tetiklenen basit olaylardır. Bu olaylar WPF routed-event sistem ile register edilmiş olaylar hariç standart .NET olaylarına çok yakındır.
  • Tunneling Event : Tunneling Event, olay tetiklenmeleri root kontrollerden child kontrole doğru hareket eder. Tunnelling Event ile Preview öneki ile belitilen eventlar(PreviewKeyDown) tetiklenir.
  • Bubbling events : Bubling Event, Tunneling Event karşıtıdır ve olay tetiklenmeleri child kontrolden root kontrole doğru hareket eder. Bubbling Event ile standart eventler(Click) tetiklenir.

Şimdi bir örnek yapalım. Forma 1 Button ekleyelim Button’un içerisine StackPanel, StackPanel’in içerisine 2 adet Button ekleyelim. Form aşağıdaki gibi olacaktır.

Xaml kodları aşağıdaki gibi olacak.



Window1.xaml. cs dosyasına aşağıdaki kodları ekleyin.
Projeyi çalıştırın. Önce Button1’i tıklayın. Sadece “Button1 Tıklandı” yazılı bir mesaj kutusu karşınıza çıkacaktır. Daha sonra Button 2’yi tıklayın. Sırasıyla "Tamam butonu tıklandı." ve “Button1 Tıklandı” yazılı iki mesaj kutusu art arda gelecektir. Dikkat ederseniz Button2 tıklandığında hem button2_Click hem de button1_Click event handler’ları tetiklenmiştir.
Bu makalemde WPF Event Modeli ve Routed Event’ı inceledik. Başka bir makelede görüşmek üzere...

Hiç yorum yok: