23 Ağustos 2007 Perşembe

WPF Üzerinde Olay Yönetimi ve Routed Event

WPF, XAML ile beraber karmaşık bileşenleri kolayca tasarlamamıza izin veriyor. Örnek olarak aşağıdaki kodu inceleyelim.

<button horizontalalignment="Left" name="button1" click="button1_Click">
<stackpanel orientation="Vertical">
<label name="blbl1" content="label1"></label>
<ellipse name="elips1" fill="Blue" height="25" width="50"></ellipse>
<button height="23" name="button3" click="button3_Click">Button</button>
</stackpanel>
</button>


Örneğimizde bir button içinde stackpanel, onun içerisinde label,button ve ellips nesnelerini görüyoruz. WPF imkanlarından yararlanarak normal şartlarda uzun uğraşlar sonucunda oluşturabileceğimiz bir kompozit ( Birleşik) bir bileşen elde ettik.

Şimdi şu konu üzerinde düşünelim. Bu birleşik bileşen üzerinde mouse ile tıkladığımızda; hangi bileşene ait Event devreye girecek? Örneğin Button1 içerisindeki Button3 üzerine mouse ile tıkladığımızda Button3 ait Click olayı mı devreye girecek, yoksa bunları içinde barındıran Button1 bileşenine ait Click olayımı devreye girecek?

Yukardaki sorumuzun cevabı, Button1 üzerinde her nereye tıklarsanız tıklayın Click olayı tetiklenecektir. WPF üzerinde Routed Event yapısı bu problemi ortadan kaldırmaktadır. Eğer Button3 üzerine tıklayacak olursanız önce Button3'e ait Click olayı ardından Button1 ait Click olayı tetiklenecektir. Peki bu yapı nasıl çalışmaktadır? Çok detaya girmeden anlatacak olursak Routed Event kavramı içinde iki önemli başlık karşımıza çıkmaktadır. Tunneling ve Bubbling.

Tunelling : Button3 üzerinde tıklama işlemi gerçekleştiği zaman, tıklama işleminin sonucu olarak olay mesajı root pozisyonunda olan Button1 bileşenine ulaşır. Bileşen kendine ulaşan mesajı bir silsile yolu ile önce StackPanele, StackPanelde Button3 ulaştırır. Bu işleme Tunnelling denir. Tunnelling aşamasında Preview öneki ile anılan eventlar (PreviewMouseDown) tetiklenir.

Bubbling : Son noktaya ulaşıldığında sistem Button3 ait Click olayını tetikledikten sonra, geriye doğru bir ağaç yapısı içerisinde olayları tetikleyerek ilerler. Önce Button3 ardından StackPanel ve son olarak Button1 bileşeninin Click olayı devreye girer. Bu işlemede Bubbling denir. Normal olarak kullanmakta olduğumuz Click, MouseDown vb. olaylar Bubbling türü olaylardır.

Aşağıdaki şemada Routed Event yapısına ait işleyiş açıkça gözükmektedir.
















Ben kaçtım sonra görüşürüz :)

16 Ağustos 2007 Perşembe

Visual Studio 2008 ( Orcas) Beta 2 Çıktı

Microsoft Visual Studio 2008 yazılım geliştirme aracının Beta2 sürümünü piyasaya sundu. Beta2 sürümü .NET Framework 3.5 Beta üzerinde çalışmakta. WPF, WCF, WF, LINQ teknolojilerini destekleyen sürüm; AJAX kullanılarak web projeleri geliştirmenize imkan sağlıyor. Visual Studio 2008 Beta2 üzerinde Windows Forms türü .NET 2.0 ait teknolojilerde kullanılabilmekte.

Aşağıda Visual Studio 2008 Beta2'ye ait farklı sürümleri bulabilirsiniz.

Visual Studio 2008 Beta 2 Express Editions
Visual Studio 2008 Beta 2 Standard Edition
Visual Studio 2008 Beta 2 Professional Edition
Visual Studio Team System 2008 Beta 2 Team Suite
Visual Studio Team System 2008 Beta 2 Team Foundation Server
Visual Studio Team System 2008 Beta 2 Test Load Agent
MSDN Library for Visual Studio 2008 Beta 2