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

27 Haziran 2007 Çarşamba

XAML ve Embedded Kod

XAML teknolojisi ASP.NET üzerinde olduğu gibi Embedded kod teknolojisini desteklemektedir. XAML derlenme aşamasında x:Code ile belirlenen kod alanını *.g.cs dosyasının içerisinde aktarır. CDATA aslında gerekli değildir. Fakat XML parse aşamasında burda ortaya çıkabileçek bazı karakter sorunlarını '&' gibi, bu alanı işlem dışı tutarak giderir. Embedded kod kullanımı UI ile kod yazımını ayırma mantığına ters düşsede yeni bir özellik olarak sisteme eklenmiştir.

Windows Forms yerine WPF mi?

WPF zengin bir form içeriği oluşturmak için eski Windows Formlarından daha başarılı ve güçlü bir yapıdır. Bununla birlikte ticari uygulamalar için Windows Formları halen sektörün hakimidir. Piyasada çok sayıda 3.parti Windows Forms bileşeni bulunmaktadır. Şuan için WPF bileşenlerini kullanarak programlama yapmak gerçekten güç. Mesela olayları bağlamak için elle tanımalama yapmak gerekiyor. Gelecek açısından WPF bileşenlerine ait kontrollerin programlanması ile ilgili kolaylıklar VS "Orcas" ile beraber geldiğinde bu sorunlar ortadan kalkacaktır.

WPF grafik alanında getirdiği yenilikler ve görünüm açısından olan esnekliği ile Vista işletim sistemi üzerinde kendini göstereceği kesindir. İsteyen kullanıcılar için Windows Forms bileşenlerinide WPF üzerinde kullanma imkanı vardır. Gelecek WPF teknolojisinin:)

10 Haziran 2007 Pazar

WPF Uygulamaları Geliştirmek İçin Nereden Başlamalıyım?

Nereden başlamalıyım?
İlk olarak WPF ve diğer tüm .NET 3.0, .NET 2.0 mimarisi üzerine kurulduğundan, .NET 2.0 framework'u kurmalısınız.
Microsoft .NET Framework Version 2.0 Redistributable Package (x86)

WPF ile ilgili daha önceden bir şeyler yüklemiştim.
Eğer daha önceki sürümler bilgisayarınızda yüklüyse Microsoft'un Uninstall araçlarıyla öncelikle geçmiş sürümleri bilgisayaranızdan kaldırmanız gerekir.
Pre-released Microsoft .NET Framework 3.0 Uninstall Tool

Buraya kadar hazırlıklar tamam
O zaman öncelikle .NET Framework 3.0'ı yüklemeniz gerekiyor. Aşağıdaki linkten kurulum dosyalarını indirebilirsiniz.
Microsoft .NET Framework 3.0 Redistributable Package

Framework 3.0'ı yükledim ama uygulama geliştiremiyorum!
WPF ile uygulama geliştirebilmek için gerekli belgeler, örnek uygulamalar ve araçları aşağıdaki linkte bulabilirsiniz. Windows Vista SDK'sı uygulama geliştirmeniz için gerekli temel bileşenleri içerir.
Microsoft® Windows® Software Development Kit for Windows Vista™ and .NET Framework 3.0 Runtime Components

Ben WPF uygulamalarımı Visual Studio 2005 ile geliştiremiyorum
WPF uygulamalarınızı Visual Studio 2005 ile geliştirebilmeniz için Visual Studio Extensions'ı yüklemeniz gerekir.
Visual Studio 2005 extensions for .NET Framework 3.0 (WCF & WPF), November 2006 CTP

Tamamdır... Hepsini kurdum şimdi ne yapıyoruz?
:) bundan sonrası size kalmış... Belgeleri okuyun ve örnek uygulamaları çalışın. Tabii bizi izlemeye de devam edin.

9 Haziran 2007 Cumartesi

WPF ve Diğer Microsoft Uygulamaları

Artık .Net Framework 3.0 ile uygulama geliştirebiliyoruz. Peki .Net 2.0 ile alıştığımız kontrollere ne olacak?

—Tabi ki cevabı çok basit... Microsoft geleneğini bozmadı ve versiyonlara geriye dönük destek vermeyi .Net Framework 3.0 da da devam ettirdi. .Net Framework 3.0 kullanırken, .Net Framework 2.0 kontrollerini de uygulamamız içerisinde kullanmaya devam edeceğiz.

Microsoft .Net Framework 3.0, farklı teknolojilerdeki microsoft uygulamalarıyla çalışabilmemize olanak sağlıyor. O zaman diğer soru geliyor: WPF ile hangi Microsoft uygulamaları ile çalışabiliriz?

1) WindowsForms

Dediğim gibi eskiden kullandığımız DataGridView kontrolü ile çalışabiriz. Geçmişe dönük desteği kullanabilme imkânını WPF ile birlikte gelen WindowsFormsHost sağlamaktadır. WindowsFormsHost aynı zamanda ActiveX denetimini de desteklemektedir. Ayrıca ElementHost ile Windows kontrollerinin yapacaklarını da yönetmiş oluruz.

2) Win32/MFC

.Net Framework çıkmadan önce programcılar kullanıcı ara yüzlerini c++ tarzı programlarla yazılmış Win32 API ya da MFC kullanarak yapıyorlardı. WPF ile birlikte gelen HwndHost sınıfı ile bu gelenek devam etmekte.

3) Direct3D

WPF ile kullanıcılara Direct3D ile çalışma imkânı verilmekte.

4) AJAX/”Atlas”

Karşımıza ilk olarak Internet Explorer 5.0 ile çıkan AJAX 2000’lere yaklaştıkça popülaritesini arttırdı. XMLHttpRequest ile başlayan bu furya gün geçtikçe web programcıları tarafından benimsendi ve günümüzde kullanılmakta. WPF, AJAX teknolojisinin tamamen arkasında.

5) “WPF/E”

Benim için en önemli Microsoft uygulaması ise WPF/E. E’nin açılımı ise Everywhere. Microsoft programcılarının en çok yakındıkları konu ise Microsoft uygulamalarının sadece Microsoft işletim sistemleri üzerinde çalışmasıdır. WPF/E ile platform bağımsız uygulama geliştirebilme gücüne erişmiş durumdayız. Bu yaklaşıma javascript tabanlı olmasıyla ulaşıldı.

8 Haziran 2007 Cuma

WPF neler yapabiliriz?

Bu bölümü sizinle paylaşırken ilk önce eskiden işlerimizi hangi araçları kullanarak yaptığımızdan söz edeceğim ve WPF geldikten sonra eskiden ne kadar sıkıntı çektiğimizi anlatmaya çalışacağım.

Eskiden

Windows Forms teknolojisini kullanarak formlar, kontroller ile çalışabiliyorduk ve on-screen documents olarak adlandırdığımız dokümanları da kullanıcılara gösterebiliyorduk.

PDF yöntemi ile de fixed-format documents olarak adlandırılan dokümanları kullanıcılara gösterebiliyorduk.

Windows Forms içerisinde bulunan GDI+ ile de resimlerle çalışabiliyor ve iki boyutlu grafikler çizdirme imkânına erişebiliyorduk.

Windows Media Player ile sesler ve görüntüler ile ilgili işlemler yapabiliyorduk.

Direct3D ile 3 boyutlu grafiklerle çalışabiliyorduk…

WPF ile birlikte

Sadece WPF kullanarak formlar, kontroller, on-screen documents, fixed-format documents, resimler, iki boyutlu grafikler, video ve ses hatta 3 boyutlu işlemleri gerçekleştirebiliyoruz.
Yani her şey tek bir ortamda bir araya gelmiş…