Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

WPF'de MVVM'i Anlayınca, Code-Behind'a Yazdıklarım Yüzümü Kızarttı!

codexor

Üye
Katılım
14 Mart 2026
Mesajlar
24
Kafayı yiyecektim arkadaş. WPF'e başladığım ilk zamanlar, her şeyi MainWindow.xaml.cs'in içine yazıyordum. Buton click? Code-behind. Combobox seçimi? Code-behind. Veri yükleme? Yine code-behind. "Zaten çalışıyor, pattern falan ne gerek var ki?" diyordum. Meğerse kocaman bir spaghetti code dağının temelini atıyormuşum.

🤦‍♂️ Code-Behind Cehennemim

Proje büyüdükçe, o MainWindow.xaml.cs dosyası 1000 satırı geçti. Bir butona tıklayınca ne olacağını bulmak için sayfalarca aşağı kaymak gerekiyordu. Unit test yazmak? Şaka gibi ama imkansızdı çünkü her şey arayüze sıkı sıkıya bağlıydı. ViewModel diye bir şey duymuştum ama "Nasıl yani, INotifyPropertyChanged ne işe yarıyor?" diye düşünüp geçiyordum.

C#:
// Utanç dolu eski kodum
private void Button_Click(object sender, RoutedEventArgs e)
{
    string ad = txtAd.Text;
    listBox.Items.Add(ad);
    // İş mantığı, UI işlemleri, her şey iç içe...
}

💡 MVVM Aydınlanması ve İlk ViewModel

Sonra bir gün, gerçek bir MVVM örneği inceledim. DataBinding'in gücünü, Command'ların şıklığını gördüm. İlk ViewModel sınıfımı yazdığımda, olay şuna döndü:

C#:
public string KullaniciAdi { get; set; } // Değil!
public string KullaniciAdi
{
    get { return _kullaniciAdi; }
    set { _kullaniciAdi = value; OnPropertyChanged(); }
}

INotifyPropertyChanged interface'ini implemente edip, ICommand ile bir komut yazdığım an, dünyam değişti. Artık UI (View) ile iş mantığım (ViewModel) birbirinden ayrılmıştı. XAML tarafı temiz, arka plan kodu sade ve test edilebilir hale gelmişti.

✅ Ulaştığım Rahatlık ve Pişmanlık

Şimdi geriye dönüp baktığımda, o code-behind'a döktüğüm yüzlerce satır kod için yüzüm kızarıyor. MVVM sadece bir "pattern" değil, WPF'de sağlıklı kod yazmanın olmazsa olmazıymış. Veri bağlama (Binding) sayesinde UI güncellemeleri otomatik, ViewModel'ler sayesinde kod tekrar kullanılabilir ve test edilebilir hale geldi.

Siz de benim gibi WPF'de code-behind cennetinden MVVM disiplinine geçiş yaptınız mı? O eski alışkanlıkları kırmak sizi de zorladı mı? Yoksa siz baştan mı akıllıydınız? Yorumlara bekliyorum!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri