TOC

This article is currently in the process of being translated into Turkish (~99% done).

About WPF:

WPF vs. WinForms

Bir önceki bölümde WPF'nin ne olduğu ve biraz da WinForms hakkında konuştuk. Bu bölümde her ikisini kıyaslamaya çalışacağım çünkü her ne kadar nihai amaçları aynı olsa da ikisi arasında oldukça FAZLA fark var. Daha önce hiç WinForms ile çalışmadıysanız ve özellikle eğer WPF sizin için bir ilkse bu bölümü atlayabilirsiniz, ama ikisi arasındaki farkları merak ediyorsanız okumaya devam edin.

WinForms ve WPF arasındaki en önemli tek fark WinForms standart Windows kontrolleri (metin kutusu gibi) üzerinde bir katman iken WPF tamamen yeniden inşa edilmiştir ve standart Windows kontrolleri ile neredeyse hiç bir durumda bağlantısı yoktur. Bu ufak bir fark gibi gözükse de aslında değildir, Win32/WinAPI'ye dayanan bir altyapı ile çalıştıysanız mutlaka fark edeceksiniz.

Bunun en güzel örneği üzerinde resim olan bir düğmedir. Bu standart bir Windows kontrolü değildir bu nedenle WinForms kutudan çıktığı gibi size bu ihtimali sunmaz. Bunun yerine bu resmi sizin çizmeniz, resim destekleyen kendi düğmenizi yapmanız veya 3. parti kontroller kullanmanız gerekir. WPF ile bir düğme herhangi bir şey barındırabilir çünkü o temelde içeriğe ve çeşitli durumlara ( örn. dokunulmamış, üzerine gelinmiş, basılmış) sahip bir sınırdır (border). WPF düğmesi diğer çoğu WPF kontrolü gibi "Görünümsüz"dür, bu içinde bir dizi farklı kontrol barındırabilir anlamına gelir. Bir resim ve bazı yazılar içeren bir düğme mi istiyorsunuz? Düğme içine bir Resim (Image) ve MetinBloğu (MetinBlock) kontrolü ekleyin ve işiniz bitti! Basitçe standart WinForms kontrollerinden ile bu tarz bir esneklik elde edemezsiniz, bu nedenle resim içeren düğme kontrolleri gibi oldukça basit eklentiler için büyük bir pazar oluşmuştur.

Bu esnekliğin kötü yanı ise bazen WinForms ile oldukça kolay olan şeyleri elde etmek için daha fazla çalışmanız gerekmesi, çünkü bunlar onları kullanmak isteyeceğiniz durumlar için geliştirilmişlerdir. En azından başlangıçta, kendinizi WinForms Liste Görünüm Öğesi'nin (ListViewItem) tek bir satırda yaptığı bir resim ve düzgün hizalanmış metin içeren bir Liste Görünümü şablonu oluşturmaya çalışırken bulduğunuzda his edeceğiniz şey budur.

Bu sadece tek bir fark, WPF ile çalıştıkça diğer pek çok değişikliğin olduğunu fark edeceksiniz - WPF basitçe her şeyi kendi yöntemi ile yapar, iyi ya da kötü. İstediklerinizi Windows pencereleri ile yapmak zorunda değilsiniz, ancak bu tarz bir esneklik elde etmek, bazı şeyleri Windows pencereleri ile yapmaya çalıştığınızda size fazladan çalışmaya mal olacaktır.

Aşağıdaki WPF'nin WinForms karşısında sahip olduğu önemli avantajların tamamen öznel bir listesidir. Size neyle karşı karşı olduğunuz hakkında daha fazla fikir verecektir.

WPF Avantajları

  • Daha yenidir ve mevcut standartlara daha uyumludur.
  • Microsoft bir çok yeni uygulamasında, örn. Visual Studio, bunu kullanmaktadır.
  • Çok daha esnektir, bu sayede yeni kontroller yazmadan veya satın almadan daha fazla şey yapabilirsiniz.
  • 3. parti kontrollere ihtiyacınız olduğunda bu kontrollerin geliştiricileri muhtemelen daha yeni olduğu için WPF üzerine odaklanmış olacak.
  • XAML GKA'nızı oluşturmayı ve değiştirmeyi daha kolay hale getirir ve işi bir tasarımcı (XAML) ve programcı (C#, VB.NET, vs.) arasında dağıtmaya imkan sağlar.
  • Veri birleştirme, yerleşim ve veri arasında daha belirgin bir ayrım elde etmenize izin verir.
  • Daha iyi performans için GKA'nın çiziminde donanım hızlandırma kullanır.
  • Hem Windows hem de web uygulamaları (Silverlight/XBAP) için kullanıcı arayüzü yapmanıza izin verir.

WinForms Avantajları

  • Daha eskidir bu nedenle daha fazla kullanılmış ve test edilmiştir.
  • Hali hazırda bol miktarda satın alabileceğiniz veya ücretsiz elde edebileceğiniz 3. parti kontroller mevcuttur.
  • Bu makelenin yazıldığı tarih itibarı ile Visual Studio içindeki WinForms tasarlayıcısı WPF için olandan daha üstündür, WPF ile işin daha fazla kısmını sizin yapmanız gerekmektedir.