Yeni Başlayanlar İçin WPF Eğitimi

⚡ Akıllı Özet

WPF (Windows Sunum Foundation) 'dir Microsoftzengin yapılar inşa etmeye yönelik çerçevesi Windows Masaüstü uygulamaları. Yeni başlayanlar, XAML, veri bağlama ve donanım hızlandırmalı grafiklerin nasıl bir araya gelerek daha az kodla ölçeklenebilir, görsel açıdan zengin kullanıcı arayüzleri oluşturduğunu öğrenirler.

  • 🧭 Foundation: WPF, .NET platformu içinde yer alan, vektör tabanlı ve DirectX destekli bir kullanıcı arayüzü çerçevesidir.
  • 🎨 XAML İşaretlemesi: Bildirimsel XML sözdizimi, arayüz tasarımını C# iş mantığından ayırır.
  • 🧱 Archidoku: PresentationFramework, PresentationCore ve Milcore, DirectX üzerinde görüntü oluşturma için birlikte çalışır.
  • 🔗 Bağlanma verileri: Dahili bağlama, kontrolleri veri kaynaklarına bağlar ve MVVM tasarım modelini destekler.
  • Uygulamalı Başlangıç: Visual Studio şablonları, yedi adımda ilk WPF uygulamanızı oluşturmanıza ve çalıştırmanıza olanak tanır.
  • ???? Modern Uygunluk: WPF açık kaynaklıdır ve uzun vadeli destek kapsamında .NET 10 ile birlikte gelir.

Yeni Başlayanlar İçin WPF Eğitimi

WPF nedir?

WPF inşa etmek için bir çerçevedir Windows Geliştiricilerin daha az kod karmaşıklığı kullanarak 3D animasyonlar ve zengin renklerle zengin kullanıcı arayüzleri oluşturmasına olanak tanıyan uygulamalar. Modern grafik kartlarının donanım hızlandırmasını kullanan vektör tabanlı bir işleme motorudur, bu da kullanıcı arayüzünü daha hızlı ve yüksek oranda ölçeklenebilir hale getirir. WPF'nin açılımı şöyledir: Windows Sunum Foundation.

WPF, WinForms'a göre bir evrim olarak düşünülebilir. Kullanımı kolay bir grafiksel görüntüleme sistemi sunar. Windows ve kullanıcı arayüzü ile iş mantığı arasında net bir ayrım sunar.

WPF uygulamaları genellikle bağımsız masaüstü programları olarak dağıtılır ve ayrıca diğer uygulamalarda gömülü nesneler olarak da barındırılabilirler.

Neden WPF?

WPF platformunu kullanmanın birçok nedeni vardır. Bunlardan en öne çıkanları şunlardır:

  • Çeşitli medya türleriyle uğraşmanız gerekiyorsa kullanabileceğiniz ideal bir platform
  • WPF, özelleştirilmiş bir kullanıcı arayüzü oluşturmanıza olanak tanır. Ayrıca, kullanıcı arayüzünün bir bölümünü yüklemeniz gerektiğinde veya XML verilerini bağlamak istediğinizde de size yardımcı olur.
  • Üzerine inşa edildiği için geniş .NET sınıf kitaplığından yararlanmanıza olanak tanır .NET teknolojisi
  • Çözünürlük bağımsızlığı sayesinde, WPF kullanılarak geliştirilen uygulamalar küçük tablet ekranlarında veya 20 inçlik bir monitörde çalışabilir.
  • WPF, WinAPI yerine DirectX üzerine kuruludur. İstemci bilgisayarın grafik sistemini kullandığı için daha yüksek grafik işleme gücü sunar.
  • "Masaüstü yayıncılık" kalitesinde sayfa düzeni sağlayan akışlı belge modelini destekler.
  • Görünüm ve davranış gevşek bir şekilde birbirine bağlıdır. Bu, tasarımcıların ve geliştiricilerin iki ayrı model üzerinde çalışmasına olanak tanır.
  • WPF çerçevesinde, kod ayrıştırmak yerine basit XML belgeleri kullanarak grafiksel olarak araçlar tasarlayabilirsiniz.
  • Daha iyi performans için GUI'yi çizerken donanım hızlandırmayı kullanmanıza olanak tanır

Şimdi de bu çerçevenin zaman içinde nasıl geliştiğine bakalım.

WPF'nin Tarihçesi

Windows 1.0, ilk GUI ortamıydı. MicrosoftDOS'un üzerinde bir katman olarak çalışıyordu ve grafikler ile kullanıcı arayüzü için GDI ve USER sistemlerine dayanıyordu.

DirectX, 1995 yılında oyunlar ve diğer grafik tabanlı ortamlar için yüksek performanslı bir grafik sistemi olarak tanıtıldı. Yıllar içinde birçok sürümü yayınlandı ve DirectX 9, yönetilen .NET koduyla kullanılabilen bir kütüphane sağladı.

WPF sürümü Çıkış tarihi .Net Sürümü Visual Studio Sürümü Özellikler
3.0 2006 3.0 - İlk sürüm.
Ancak WPF geliştirmesi VS 2005 ile yapılabilir.
3.5 2007 3.5 2008'e Karşı Değişiklikler ve iyileştirmeler:
Uygulama modeli, bağlama, kontroller, belgeler, açıklamalar ve 3 boyutlu kullanıcı arayüzü öğeleri.
3.5 SP1 2008 3.5 SP1 - Yerel açılış ekranı desteği. Yeni web tarayıcı kontrolü, DirectX piksel gölgelendirici desteği.
4.0 2010 4.0 2010'e Karşı Yeni kontroller: Takvim, Veri Tablosu, Tarih Seçici. Çoklu Dokunma ve Manipülasyon desteği.
4.5 2012 4.5 2012'e Karşı Daha hızlı başlatma, büyük veri kümelerini görüntülerken gelişmiş performans.
Veri doğrulama için yeni Ribbon denetimi ve INotifyDataErrorInfo arayüzü.
4.5.1 2013 4.5.1 2013'e Karşı Performans ve güvenilirlikte ufak iyileştirmeler.
4.5.2 2014 4.5.2 NA Büyük Değişiklik Yok
4.6 2015 4.6 2015'e Karşı Şeffaf alt pencere desteği
HDPI ve Dokunmatik iyileştirmeler
4.8 2019 4.8 2019'e Karşı Yüksek çözünürlüklü ekran (HDPI) düzeltmeleri ve erişilebilirlik iyileştirmeleri içeren son büyük .NET Framework sürümü.
.NET Core 3.0 ve sonrası 2019-, bu .NET Core 3.0'dan .NET 10'a VS 2019/2022 WPF açık kaynaklı hale geliyor ve modern .NET ile birlikte sunuluyor (uygulamalar aynı kalıyor). Windows-sadece).

WPF artık .NET'ten ayrı olarak sürümlendirilmiyor. 2019'dan beri modern .NET platformunun açık kaynaklı bir bileşeni olarak sunuluyor ve mevcut sürüm, Kasım 2025'te uzun vadeli destek (LTS) sürümü olarak gelen .NET 10'a dahil.

WPF'nin özellikleri

Aşağıdaki diyagram, WPF'nin temel özelliklerini gruplandırmaktadır ve bu özellikler daha sonra ayrıntılı olarak listelenmiştir.

WPF'nin özellikleri
WPF'nin özellikleri
  • Belgeler ve Yazdırma
  • Güvenlik, Erişilebilirlik ve Yerelleştirme
  • Birlikte Çalışabilirlik Sunar Windows Form kontrolleri
  • Direct3D, performansın önemli olduğu grafik uygulamalarında kullanılır
  • İşleme için video kartı donanımını kullanır
  • Vektör tabanlı grafikler, uygulamanızı kalite kaybı olmadan ölçeklendirmenize olanak tanır.
  • WPF, kayan noktalı mantıksal piksel sistemini ve 32 bit ARGB renk sistemini destekler.
  • Stilleri ve Kontrol Şablonlarını Yeniden Tanımlayın
  • Bileşik yazı tiplerinden uluslararası yazı tipleri oluşturma
  • WPF metin oluşturma işlemi ClearType teknolojisinden yararlanır.
  • Video belleğinde önceden oluşturulmuş metni önbelleğe alma tekniğini kullanmanızı sağlar
  • Her kontrol için kaynak tabanlı yaklaşım
  • Sunum zamanlayıcıları WPF tarafından başlatılır ve yönetilir
  • Video ve animasyon arasındaki ilişki de desteklenmektedir
  • WPF'de stil, görsel sunum için kullanılan içeriğe uygulanması gereken bir dizi özelliktir.
  • WPF'deki şablonlar, belgenizin kullanıcı arayüzünü değiştirmenize yardımcı olur.
  • Komutlar daha soyuttract ve gevşek bağlantılı olaylar versiyonu
  • Komutlar için WPF desteği yazmamız gereken kod miktarını azaltır

Bu WPF'de bir sonraki adım C# öğreticisiBu bölümde WPF'nin temel türleri ve altyapısı hakkında bilgi edineceğiz.

WPF Çekirdek Türleri ve Altyapıları

WPF'deki sınıflar dört farklı türe ayrılır:

  • UIElement
  • Çerçeve Öğesi
  • İçerik Öğesi
  • ÇerçeveİçerikÖğesi

Bu sınıflar temel öğe sınıfları olarak bilinir. Kullanıcı arayüzlerini oluşturma modelinin temelini sağlarlar.

WPF kullanıcı arayüzleri, öğe ağacı adı verilen bir ağaç hiyerarşisinde bir araya getirilmiş öğelerden oluşur. Öğe ağacı, kullanıcı arayüzlerini düzenlemenin sezgisel bir yoludur ve güçlü kullanıcı arayüzü hizmetleri elde etmenizi sağlayan yapıdır.

XAML

"XAML" (okunuşu "zammel") olarak da bilinen Genişletilebilir Uygulama İşaretleme Dili, kullanıcı arayüzlerini tanımlamanın bildirimsel bir yoludur.

Basit bir düğmenin XAML tanımı şöyledir:

<Button
FontSize="16"
HorizontalAlignment="Center"
VerticalAlignment="Center"
>
Say Hello Guru99</Button>

XAML dilini kullanmanın avantajları:

  • XAML, ön uç görünümünü arka uç mantığından ayırır.
  • XAML, kullanıcı arayüzlerini temsil etmenin en kolay yöntemidir
  • XAML, tasarım araçlarıyla etkili bir şekilde çalışır.

Kontroller

WPF çerçevesi, aşağıdakiler gibi birçok kullanışlı kontrolü destekler:

  • Metin gibi kontrolleri düzenlemeBox, Kontrol etmekBox, Radyo düğmesi
  • Liste gibi liste kontrolleriBox, Liste Görünümü, Ağaç Görünümü
  • Label, WPF ProgressBar, ToolTip gibi kullanıcı bilgileri
  • Menü, Düğme ve Araç Çubuğu gibi eylemler
  • Border, WPF Image ve Viewbox gibi görünümler
  • OpenFileDialog ve PrintDialog gibi yaygın iletişim kutuları
  • TabControl, ScrollBar ve Group gibi kapsayıcılar.Box
  • DockPanel, StackPanel ve Grid gibi düzenler
  • Çerçeve ve Köprü gibi Gezinme

Kontrollerin görünümü, programlamaya gerek kalmadan stiller ve şablonlarla özelleştirilebilir. Uygun bir temel sınıftan yeni bir sınıf türeterek de özel bir kontrol oluşturabilirsiniz.

Görünüm

WPF, uygulamanızın görünümünü özelleştirmeye yönelik bir özellik sağlar. Yazı tipleri, arka planlar vb. gibi şeyler için nesneleri ve değerleri ayarlamanıza olanak tanır.

Stiller özelliği, ürünün tamamı için belirli bir görünümü standartlaştırmanıza olanak tanır. Varsayılan davranışını korurken varsayılan görünümü değiştirmenize olanak tanır.

Veri şablonu, bağlı verilerin varsayılan görselleştirmesini kontrol etmenizi sağlar. Temalar yardımıyla, işletim sisteminin görsel stillerini kolayca uygulayabilirsiniz.

Düzen ve Paneller

Yerleşim (layout), kontrollerin doğru konumlandırılması ve boyutlandırılmasında size yardımcı olur. Kullanıcı için sunumu oluşturma sürecinin bir parçasıdır. WPF çerçevesi, yerleşim sürecini kolaylaştırır ve kullanıcı arayüzü görünümünün daha iyi uyarlanabilirliğini sunar.

Yerleşim altyapısı beş ana sınıf tarafından sunulmaktadır: 1) StackPanel 2) DockPanel 3) WrapPanel 4) Grid ve 5) Canvas

Grafik

WPF, gelişmiş bir grafik sistemi sunar:

  • WPF, cihazdan bağımsız birimler kullanarak çözünürlük ve cihaz bağımsızlığını mümkün kılar. Her cihazdan bağımsız piksel, sistemin inç başına nokta (DP) ayarıyla otomatik olarak ölçeklenir.
  • WPF, float yerine double kullanır ve daha geniş bir renk dizisini destekler
  • WPF grafik motoru, mevcut olduğunda grafik donanımından yararlanabilecek şekilde tasarlanmıştır.

Belgeler ve Yazdırma

WPF çerçevesi üç tür belge sunmaktadır:

  • Sabit belgeler: Bu belge türü WY'yi desteklerSIWYG'nin sunumu.
  • Akış belgeleri: İçeriği pencere boyutu ve cihaz çözünürlüğü gibi çalışma zamanı değişkenlerine göre ayarlamanıza ve yeniden akışlandırmanıza olanak tanır.
  • XPS belgeleri: XML tabanlı bir formatta elektronik kağıdın sayfalandırılmış gösterimi. XPS, açık ve standartlaştırılmış bir belge formatıdır.

WPF, uzaktan yazdırma ve yazdırma kuyrukları da dahil olmak üzere yazdırma sistemi üzerinde daha iyi kontrol sağlar. Dahası, XPS belgeleri yazdırma formatına dönüştürülmeden doğrudan yazdırılabilir.

Temel yapı taşlarını ele aldığımıza göre, bu parçaların iç yapıda nasıl bir araya geldiğine bakalım.

WPF Archidoku

WPF, .NET framework'ünün bir parçasıdır. Hem yönetilen hem de yönetilmeyen kod içerir. WPF mimarisinin önemli bileşenleri aşağıdaki şekilde açıklanmıştır:

WPF Archidoku

WPF Archidoku

WPF mimarisinin bileşenleri

  • PresentationFrameworkÜst düzey öğeler (denetleyiciler, stiller, düzenler, pencereler vb.) oluşturmanıza yardımcı olur.
  • PresentationCoreBu dosya, PresentationFramework.dll'deki tüm kontrollerin ve şekillerin türetildiği UIElement ve Visual gibi temel türleri içerir.
  • CLR: Gibi özellikler sunarak geliştirme sürecini verimli hale getirir. bellek yönetimi, hata yönetimi vb.
  • Milcore: Milcore, DirectX ile sıkı entegrasyon sunan yönetilmeyen kodun bir parçasıdır.
  • DirectX: DirectX, WPF'nin grafiklerini oluşturan düşük seviyeli API'dir. DirectX, sürücülerle etkileşime girer ve içeriği işler.
  • Kullanıcı32: Birçok program tarafından yaygın olarak kullanılan temel bir API'dir. Bellek ve işlem ayrımını yönetir. User32, hangi öğenin ekranda nereye yerleştirileceğine karar vermenize yardımcı olur.
  • Çekirdek: Giriş, çekirdek modu aygıt sürücüsündeki bir sinyal olarak başlar ve bağlantı kurularak doğru işleme yönlendirilir. Windows çekirdek ve User32.

WPF Veri Bağlama

Veri bağlama, WPF'deki en güçlü kavramlardan biridir. Kontroller ve nesneler arasında değerleri manuel olarak kopyalayan kod yazmak yerine, XAML'de bir bağlantı tanımlarsınız ve WPF her iki tarafı otomatik olarak senkronize eder. Örneğin:

<TextBox Text="{Binding Path=StudentName, Mode=TwoWay}" />

WPF dört bağlama modunu destekler:

  • Tek Yön: Kaynak veriler değiştiğinde kontrol mekanizması da güncellenir.
  • İki Yönlü: Değişiklikler kontrol ve kaynak arasında her iki yönde de akar.
  • Tek Seferlik: Kontrol mekanizması kaynak değerini yalnızca bir kez, yükleme sırasında okur.
  • OneWayToSource: Kontrol, değerini kaynağa doğru iter, asla tersi olmaz.

Veri bağlama, profesyonel WPF uygulamaları için en yaygın mimari olan MVVM (Model-View-ViewModel) deseninin de temelini oluşturur; çünkü görünümün XAML'de kalmasına izin verirken, mantığın test edilebilir C# sınıflarında yer almasını sağlar.

💡 İpucu: Veri sınıflarınızda INotifyPropertyChanged arayüzünü uygulayın. Bu arayüz olmadan, kodda özellik değerleri değiştiğinde kullanıcı arayüzü yenilenmeyecektir.

WPF Kurulumu

WPF'yi yüklemek için bu bağlantıya bakın: https://www.guru99.com/download-install-visual-studio.html

Bu WPF uygulama eğitimi serisinin bir sonraki bölümünde, ilk WPF uygulamamızı oluşturacağız.

İlk WPF Uygulamanızı Nasıl Oluşturursunuz?

Bu WPF örneğinde, temel bir WPF uygulaması geliştireceğiz. Öyleyse, aşağıdaki WPF uygulama örneğinde verilen adımları izleyerek basit uygulamaya başlayalım.

) 1 Adım Visual Studio'da Dosya > Yeni > Proje yolunu izleyin.

Visual Studio Dosya menüsünde Yeni Proje seçeneği gösteriliyor.

) 2 Adım Yeni proje penceresinde

  1. WPF Uygulamasını seçin
  2. Adı “MyWPF” olarak girin
  3. Tamam'ı tıklayın.

WPF Uygulaması şablonu seçili yeni proje penceresi.

) 3 Adım Visual Studio varsayılan olarak iki dosya oluşturur

  • XAML Dosyası (MainWindow.xaml)
  • CS Dosyası (MainWindow.xaml.cs)

Çözüm Gezgini'nde MainWindow.xaml ve MainWindow.xaml.cs dosyaları gösteriliyor.

MainWindow.xaml'de

  1. Bir Tasarım Penceresi
  2. XAML Dosyası

MainWindow.xaml tasarım penceresi ve Visual Studio'daki XAML düzenleyicisi

XAML penceresinde varsayılan olarak aşağıdaki etiketler yazılır:

Yeni bir WPF penceresi için oluşturulan varsayılan XAML etiketleri

Izgara varsayılan olarak ilk öğedir.

MainWindow.xaml.cs dosyası, XAML tasarım dosyasına karşılık gelen arka plan kodunu içerir:

MainWindow.xaml.cs, WPF penceresi için arka plan kod dosyasıdır.

) 4 Adım Araç kutusunda,

  1. Metni SürükleyinBox tasarım penceresine öğe
  2. Bir metinBox tasarım penceresinde görünecek
  3. Metin için XAML kodunu göreceksiniz.Box katma

Metni SürüklemeBox araç kutusundan WPF tasarım penceresine

) 5 Adım Metni “İlk WPF Programı” olarak değiştirin.

Metni DüzenlemeBox İlk WPF Programına metin özelliği

) 6 Adım Başlat Düğmesine tıklayın

Visual Studio Başlat düğmesiyle WPF uygulamasını çalıştırın.

) 7 Adım Çıktıda bir pencere göreceksiniz.

Çalışan WPF uygulama penceresinde "İlk WPF Programı" metni görüntüleniyor.

Tebrikler! İlk WPF uygulamanızı tasarladınız ve oluşturdunuz. Yeni başlayanlar için bu WPF eğitiminde bir sonraki adımda, WPF ve WinForms arasındaki farkı göreceğiz.

WPF ve WinForms

WPF WinFormlar
Daha yeni bir çerçeve olduğundan mevcut standartlarla daha uyumludur. Daha eski olduğundan daha çok denenmiş ve test edilmiştir.
Esnek ve özellik bakımından zengin. Kod yazmaya veya kontrol bileşenleri satın almaya gerek kalmadan çok zengin uygulamalar tasarlayabilirsiniz. Özellik bakımından çok zengin değil.
3'ün geliştiricilerird Parti kontrolleri, geleceğin teknolojisi olan WPF ile uyumluluğa odaklanmıştır. Ücretsiz olarak satın alabileceğiniz veya alabileceğiniz birçok üçüncü taraf kontrolü vardır.
XAML, grafik kullanıcı arayüzünüzü (GUI) kolayca oluşturmanıza ve düzenlemenize olanak tanır. Tasarımcı (XAML) ve programcı (C#, VB.NET, vb.) arasında iş bölümünü mümkün kılar. In Windows Formlarda tüm kod tek bir yerde yazılır.
XAML becerileri, WinUI 3, .NET MAUI ve Avalonia UI gibi daha yeni çerçevelere doğrudan aktarılabilir. WinForms becerileri esas olarak klasik uygulamalara uygulanır. Windows masaüstü geliştirme.
WPF'nin kutu içi kontrol paketi sınırlıdır Kutudaki kontroller çok güçlü

WPF ile oluşturulan Uygulama Türleri

  • WPF bağımsız uygulamalar için kullanılır. Windows Kurumsal iş kolu araçları, gösterge panelleri, işlem terminalleri ve tasarım yazılımları gibi masaüstü uygulamaları.
  • Windows Formlar ve WPF sayfaları aynı uygulamada bir arada bulunabilir
  • Sayfa/pencere navigasyonu tarzında uygulamalar geliştirebilirsiniz.

Modern .NET'te WPF

Microsoft WPF, Aralık 2018'de açık kaynaklı hale getirildi ve .NET Core 3.0'dan (2019) bu yana, .NET 10 dahil olmak üzere her modern .NET sürümüyle birlikte sunuldu. Bir uygulamayı modern .NET'e taşımak, daha hızlı başlatma, bağımsız yayınlama yoluyla daha basit dağıtım ve mevcut C# dil özelliklerine erişim sağlarken, WPF programlama modeli aynı kalır.

WPF hala Windows-sadece. Eğer bugün bir masaüstü framework'ü seçiyorsanız, bu karşılaştırma yardımcı olacaktır:

iskelet En
WPF Olgun, özellik bakımından zengin Windows devasa bir ekosisteme sahip masaüstü uygulamaları
Windows Kullanıcı Arayüzü 3 Modern çağa yönelik yeni uygulamalar Windows 11 görünüm ve his
.NET MAUI'si Çeşitli platformları kapsayan uygulamalar Windows, macOS, Androidve iOS

WPF aktif olarak sürdürüldüğü ve kurumsal yazılımlara derinlemesine entegre edildiği için, onu öğrenmek pratik bir yatırım olmaya devam ediyor. Bu uygulamaları oluşturmada rahat olduktan sonra, en yaygın olanları uygulamaya koymakta fayda var. WPF mülakat soruları XAML, veri bağlama ve görsel ağaç gibi kavramları sabitlemek için.

SSS

Arayüz tasarımı için XAML'e, uygulama mantığı için ise C# (veya VB.NET)'e ihtiyacınız var. Nesne yönelimli programlama ve .NET sınıf kütüphanesi hakkında temel bilgi, WPF öğrenmeyi çok daha kolaylaştırır.

Hayır. WPF, DirectX'e bağımlıdır ve Windows API'ler üzerinde çalışır, bu nedenle yalnızca API'ler üzerinde çalışır. WindowsÇapraz platform XAML geliştirme için şunları göz önünde bulundurun: Avalonia Kullanıcı Arayüzü or .NET MAUI'si.

Evet. Araçlar gibi GitHub Yardımcı Pilotu Yorumlardan XAML düzenleri, bağlama ifadeleri ve stiller oluşturabilir; bu da öğrenmeyi hızlandırır ve yeni başlayanlar için tekrarlayan işaretlemeyi azaltır.

Entegre edebilirsin ML.NET yerel makine öğrenimi için veya bulut yapay zeka hizmetlerini çağırmak gibi Azure C# kodunuzdan OpenAI'yi kullanın, ardından sonuçları standart WPF veri bağlama yoluyla görüntüleyin.

Evet. WPF, MIT lisansı altında açık kaynaklıdır ve Visual Studio Community Edition ile ücretsiz olarak uygulamalar geliştirebilirsiniz.

Bu yazıyı şu şekilde özetleyin: