WPF, günümüzde Microsoft tarafından geliştirilmekte olan ve .NET ailesinin en güçlü programlama dillerinden biri olan C# geliştiricilerinin modern tipte grafik arayüzleri tasarlaması için 2006 yılında çıkardığı teknolojisidir. WPF aynı CSS gibi geliştiricilerine esnek bir çalışma imkanı vermektedir. Yani WPF ile hiç şüphesiz kusursuz tasarımlar, zengin arayüzleri, web katmanında gördüğümüz animasyonlar vb. grafiksel çalışmaları yapmamıza imkan vermektedir. Bu söylediklerimizin dışında en önemli olanı ise XAML’dir. Çünkü WPF platformunda zengin arayüzler tasarlamamıza imkan veren teknoloji/parça XAML teknolojisidir.
XAML (Extensible Application Markup Language) Nedir?
Microsoft tarafından .NET objeleri ve uygulama arayüzleri oluşturulmak için XML alt yapısı kullanılarak oluşturulmuş bir teknolojidir. Bu teknoloji ilk önce karşımıza Silverlight ile çıkmıştır. Zamanla XAML WPF, UWP vb. alanlarda karşımıza çıkmıştır.
XAML Syntax (Söz Dizimi):
<Window x:Class="WpfApp2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp2"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Button x:Name="btn1" Content="Button1" Width="150" Height="25"/>
<Button x:Name="btn2" Content="Button2" Width="150" Height="25"/>
<Button x:Name="btn3" Content="Button3" Width="150" Height="25"/>
<Button x:Name="btn4" Content="Button4" Width="150" Height="25"/>
<Button x:Name="btn5" Content="Button5" Width="150" Height="25"/>
</StackPanel>
</Grid>
</Window>
Burada görmüş olduğunuz kodlar XAML söz dizimidir.
WPF ile Windows Forms Arasındaki Farklar Nelerdir?
1) WPF Directx alt yapısı kullanırken, WinForms ise işlemciyi kullanmaktadır. Bu bir bakıma kötüdür çünkü bir tarfata projeyi ekran kartından renderlamak var diğer tarafta ise işlemciden renderlamak var. Yani WPF Directx alt yaısı kullanması daha iyidir.
2) WPF’de responsive tasarımlar yapılırken WinForms’da bu mümkün değildir (Mümkün ise WPF’e nazaran çok kaliteli olmaz).
3) WPF’de tasarım yaparken geliştiriciye oldukça çok imkan vermektedir. Aynı CSS gibi kod yazarak tasarım yapabildiğimiz ve daha gelişmiş WPF bize özel olarak sunduğu nesnelerin animasyonlarıda mevcuttur. WinForms’da ise esnek bir tasarım yapmak söz konusu değildir. WinForms’da bildiğiniz üzere sürükle bırak ile tasarım yapılmaktadır. Tabi bu tasarım şekli daha hızlı gözükse de kod ile tasarım yapmak “tabi zamanla olacağı için” çok daha hızlıdır.
4) WPF, Directx alt yapısını kullanması neden ile yapılan animasyonlar ve tasarımlar kusursuz vektörel gözükmektedir. WinForms’da ise yapılan animasyonlar veya tasarımlar aynı Vista’dan kalmış UI tasarımları gibi gözükmektedir.
5) WPF, vektörel tabanlı çizim motoru kullanmaktadır, WinForms ise Bitmap temalı çizim motoru kullanmaktadır.
WPF’in Dezavantajları Nelerdir?
1) Öğrenme yapısı biraz sıkıntılı olabilir. Özellikle İngilizce bilmiyorsanız bu sizi biraz sıkıntıya sokabilir. WPF’in güzel kaynakları genelde yabancılar sunmaktadır. Tabi Türk kaynaklarda mevcuttur ancak çok yeterli değildir.
2) Eğer WinForms’dan WPF’e geçtiyseniz kısa bir süreliğine alışma süreniz olur çünkü WinForms WPF’e nazaran çok daha farklıdır.
3) Eğer C# konularına çok hakim değil ileri düzeyden çok fazla bir şey bilmiyorsanız WPF’in ileri düzey konularında biraz zorlanabilirsiniz. Özellikle bağıl özellikler (Deendency Property) kavramı ileri düzey C# bilgisi olanlar için birkaç tekrarda anlaşılabilecek bir yapıda. Eğer C# bilginiz çok yok ise WPF öğrenirsiniz ancak belli seviyelerde zorluk çekebilirsiniz.