WinForms Veri Bağlaması Tim Corey’nin Ders 17'si Üzerinden Açıklanıyor
WinForms veri bağlama, yüzeyde basit görünen ancak gerçek bir uygulamada görüldüğünde çok daha netleşen konulardan biridir. "Başlangıçtan Bitişe C# Uygulaması" kursunun 17. dersinde, Tim Corey, turnuva oluşturma formu oluştururken verilerin bağlanmasının doğal olarak nasıl uyduğunu anlatıyor. Tim, verilerin bağlanması konusunu teorik olarak tanımlamak yerine, bunu pratikte gösteriyor—takım ve ödül listelerinin kullanıcı arayüzüne nasıl bağlandığını, bir modelde toplandığını, doğrulandığını ve ardından kaydedildiğini gösteriyor.
Windows Forms, basit nesneler ve koleksiyonlardan, ADO.NET veri tabloları ve veri nesneleri gibi karmaşık listelere kadar, veri bağlamaya uygun geniş bir veri yapısı yelpazesini destekler. Denetimleri veritabanlarında, dizilerde, koleksiyonlarda ve diğer yapılarda saklanan verilere bağlayabilirsiniz, bu da farklı kaynaklardan verilere erişimi kolaylaştırır. ADO.NET, DataTable (tek bir veri tablosunu temsil eder), DataView ve DataSet gibi bağlamaya uygun veri yapıları sağlar. DataView ve bir tablonun varsayılan görünümü, veri bağlı kontrollerde verilerin sıralanmasına ve filtrelenmesine olanak tanır. Bu özellikler, geliştiricilerin verilere erişmesini ve bunları arayüz öğelerine sorunsuzca bağlamasını sağlar.
Bu makalede, Tim Corey'nin videosunda görülen WinForms veri bağlamasına daha derinlemesine bakacağız ve onun açıklamalarını, kararlarını ve kodlama akışını adım adım takip edeceğiz. Amaç, veri bağlamanın Turnuva Oluştur formunu nasıl desteklediğini ve Tim'in bunu neden bu şekilde yapılandırdığını anlamaktır.
Windows Forms, DataTable, DataView ve DataSet dahil olmak üzere ADO.NET veri nesnelerine, ayrıca koleksiyonlara ve diğer yapılara bağlanmayı destekler. Veri bağlama, veritabanları, diziler, koleksiyonlar ve diğer yapılar içinde depolanan verilerle kullanılabilir. Visual Studio'da, veri kaynakları penceresi ve sunucu gezgini gibi araçlar, SQL Server ve Microsoft SQL Server gibi kaynaklara veri bağlamayı ayarlamada yardımcı olur ve bağlantıyı kurmak için bir bağlantı dizesi kullanır. Windows Forms'ta veri bağlama için modern yaklaşımlar, Entity Framework Core'u Typed DataSets'in halefi olarak kullanır ve Object Data Sources ile Entity Framework, .NET projelerinde daha sürdürülebilir ve yeniden kullanılabilir iş mantıkları sağlar. Bu yetenekler, Windows Forms veri bağlamayı geniş bir yelpazedeki .NET Framework ve .NET proje senaryoları için esnek ve güçlü kılar.
Windows Forms'a Giriş
Windows Forms, Windows üzerinde zengin masaüstü uygulamaları geliştirmek için tasarlanan .NET ekosisteminde temel bir kullanıcı arayüzü framework'üdür. Windows Forms ile geliştiriciler, etkileşimli kullanıcı arayüzlerini kolayca oluşturabilen geniş bir kontrol setine—düğmeler, metin kutuları ve tablolar gibi—erişime sahiptir. Windows Forms'un önemli yapı taşlarından biri, güçlü veri bağlama desteğidir.
Windows Forms'ta veri bağlama, UI kontrollerinizi doğrudan bir veri kaynağına, örneğin bir veritabanına, bir koleksiyona veya hatta özel nesnelere bağlamanıza olanak tanır. Bu, veri kaynağınızdaki veriler değiştiğinde, kullanıcı arayüzünün otomatik olarak güncellendiği ve tersi anlamına gelir. Verileri kontrollere bağlayarak, kullanıcı arayüzünüz ve verilerinizi senkronize halde tutmak için gereken manuel kod miktarını önemli ölçüde azaltabilirsiniz. Bu, veri odaklı uygulamalar oluşturmayı çok daha kolay hale getirir, böylece odak her güncellemeyi elle bağlamak yerine verileri yönetmeye ve görüntülemeye kayar. Basit verilerle veya daha karmaşık veri yapılarıyla çalışıyor olun, Windows Forms veri bağlama, uygulamanızın duyarlı ve sürdürülebilir olmasını sağlamak için esnek ve güçlü bir mekanizma sunar.
Turnuva Oluşturma Formunda Windows Forms Veri Bağlamanın Rolünü Anlamak
Tim, dersi Create Tournament formunun neredeyse bittiğini açıklayarak açıyor. Bu noktada, yalnızca Turnuva Oluştur düğmesi kaldı. Dersin başında, bu dersin veri kaydetmeye odaklandığını, turnuva eşleşmelerinin ise daha sonra ele alınacağını açıkça belirtir.
Başından itibaren, Tim formun zaten veri akışı sağladığını açıkça belirtir. Seçilen takımlar ve seçilen ödüller gibi listeler, halihazırda UI kontrollerine bağlıdır. Görev şimdi, bu bağlı verileri alıp kaydedilebilecek bir TournamentModel'e dönüştürmektir.
Bu çerçeve önemli çünkü Tim, veri bağlamayı arka planda zaten sessizce çalışan bir şey olarak ele alıyor—odak noktası, bağlı verileri doğru bir şekilde kullanmak, daha önce bağlamanın nasıl kurulduğunu yeniden açıklamak değil.
Bağlı UI Verilerinden Turnuva Modeli Oluşturma
Bu noktada, Tim, yapısını açıklayarak TournamentModel'e geçer. Modelin içerdiğine işaret eder:
Turnuva Adı
Giriş Ücreti
Girilen Takımlar
Ödüller
- Turlar
Tim, veri bağlamanın UI'ın, doğrudan modele atanabilecek SelectedTeams ve SelectedPrizes gibi koleksiyonları sürdürmesine olanak sağladığını açıklar.
TournamentModel'in şimdilik turlar olmadan nasıl oluşturulabileceğini gösteriyor, veri bağlamanın bir modelin kısmi olarak doldurulmasına izin verdiğini vurguluyor. Modelin bu aşamada "tamamlanmış" olması gerekmiyor.
TextBox Değerlerini Bağlama ve Giriş Ücretini Doğrulama
Tim, daha sonra turnuva adı ve giriş ücreti ile başlayarak metin kutusu kontrolünden değerleri almaya odaklanır. Kontrolün özelliği bir veri kaynağı sütunu ile bir bağlama nesnesi kullanılarak da bağlanabilirken, turnuva adının TextBox kontrolünün metin özelliğinden doğrudan atanabileceğini açıklar. Bir denetimdeki DataBindings koleksiyonunu kullanarak basit veri bağlamaları ekleyebilirsiniz, örneğin bir TextBox'ı bir veri kaynağı sütununa bağlamak gibi.
Tim, değeri doğrudan çözümlemek yerine, decimal.TryParse kullanıyor. Bu durumun neden önemli olduğunu açıklar: uygulamanın çökmesi kabul edilemez bir davranıştır. Geçersiz veri girildiğinde, uygulama tamamen başarısız olmamalı, işlemeyi durdurmalıdır.
Burada Tim, veri bağlamaya ilişkin önemli bir ilkeyi gösteriyor: Verilerin bağlı bir kontrolden gelmesi, geçerli olduğu anlamına gelmez.
Bağlama sınıfı, format olayı ve çözümleme olayı gibi olayları destekler ve verilerin görüntülenmesi için nasıl biçimlendirileceğini veya depolama için nasıl çözümleneceğini özelleştirmek amacıyla bir olay işleyicisi ekleyebilirsiniz. Bağlama nesnesi, kontrolün özelliği ile veri kaynağı arasındaki bağlantıyı yönetir ve veriler kontrol üzerinden veri kaynağına kaydedilmeden önce çözümleme olayı tetiklenir.
Geçersiz giriş hakkında kullanıcıyı bilgilendirmek için bir mesaj kutusu kullanır ve hemen metottan döner. Bu, bağlanan verilerin beklenen kurallara uygun olduğunda modelin doldurulmasını sağlar.
Model'e Bağlı Ödül ve Takım Listelerinin Atanması
Burası, Tim'in WinForms veri bağlamanın faydasını açıkça gösterdiği yerdir.
Başlangıçta, modele ödülleri tek tek ekleyen bir foreach döngüsü gösterir. Daha sonra duraklıyor ve bunun gerekli olmadığını açıklıyor çünkü:
Seçilen ödüller listesi zaten bir PrizeModel Listesidir
- TournamentModel aynı türü bekler
Tim ardından döngüyü doğrudan bir atama ile değiştirir:
tm.Ödüller = seçilenÖdüller;
tm.KatılanTakımlar = seçilenTakımlar;O, verilerin zaten bağlı ve doğru formatta olduğu için, bu doğrudan atamanın hem geçerli hem de daha temiz olduğunu açıklar. Bu an, uygun veri bağlamanın gereksiz kodu nasıl azalttığını açıkça göstermektedir.
Bağlı Verileri Tutarlı Bir Desen Kullanarak Kaydetme
Tim, veri bağlantısında CreateTournament çağrısı yaparak turnuvayı kaydetmeye başlıyor. Bu durumun, uygulanın diğer bölümlerinde kullanılan aynı modeli takip ettiğini açıklıyor:
Bir model geçirin
- ID ile bir model geri alın
Öngörülebilir kalıpların hataları daha kolay fark etmeyi sağladığını belirterek burada tutarlılığı vurgular.
Bu bölüm veritabanı mantığına odaklanmış olsa da, Tim defalarca modelin zaten bağlı veri içerdiğine geri dönüyor—takımlar ve ödüllerin yeniden işlenmesine gerek yok çünkü veri bağlama zaten bu işi yaptı.
Veri İşlemlerini Odaklanmış Yöntemlere Ayırma
Tim, yöntem karmaşıklığı hakkında konuşmak için duraklıyor. Yöntemin teknik olarak "bir şey" (bir turnuva yaratma) yaptığını, ancak bu bir şeyin birden fazla adımı içerdiğini açıklar.
Okunabilirliği artırmak için, mantığı şu şekilde ayırır:
TurnuvayıKaydet
TurnuvaÖdülleriniKaydet
- TurnuvaGirişleriniKaydet
Bu, veri bağlamanın temiz mimariyi nasıl desteklediğini pekiştirir. Bağlı veri, modele bir kez akar ve oradan itibaren her yöntem yalnızca kendi sorumluluğunu üstlenir.
Tim bunu, ana metodun eylemleri koordine edip karmaşık hale gelmediği bir oyun kurucu yöntemi olarak adlandırır.
SQL ve Metin Bağlayıcıları Arasında Veri Kaynağı Bağlama
Tim daha sonra odak noktasını metin dosyası konektörüne kaydırır. Veritabanı ister SQL ister metin dosyaları olsun, aynı bağlı verilerin tutarlı bir şekilde ele alınması gerektiğini açıklar.
Turnuva modellerini CSV dosyalarına ve CSV dosyalarından dönüştürme sürecinde ona eşlik eder. Burada, Tim, başlangıçta kullanıcı arayüzünde bağlı olan takım ve ödül listelerinin nasıl ID dizilerine dönüştürüldüğünü ve daha sonra nasıl yeniden suyla dolu hale getirildiğini açıklıyor.
Bu, önemli bir fikri pekiştirir: WinForms veri bağlama modeli besler ve model, depolama formatından bağımsız olarak tek doğru kaynak haline gelir.
Bağlama Bağlamı: WinForms'ta Birden Fazla Bağlamayı Yönetme
Windows Forms veri bağlamanın ana özelliklerinden biri, bir form içindeki tüm veri bağlamalarının yöneticisi olarak görev yapan BindingContext'tir. Bir denetimi bir veri kaynağına bağladığınızda, BindingContext verilerinizin denetimleriniz ile temel veri arasında nasıl aktığını koordine eder. Bu, her veri kaynağı için bir CurrencyManager oluşturarak gerçekleştirilir; bu, mevcut kaydı takip eder ve aynı veri kaynağına bağlı tüm kontrollerin senkronize kalmasını sağlar.
Bu özellikle, bir TextBox ve bir DataGridView gibi, aynı veri kaynağına bağlı birden fazla kontrolünüz olduğunda önemlidir; her ikisi de tek bir listeden bilgi gösterir. BindingContext, kullanıcı bir kontrolde farklı bir kayda geçiş yaptığında, diğer kontrollerin otomatik olarak aynı veriyi yansıtacak şekilde güncellenmesini sağlar. Bu merkezi yönetim, birden çok veri bağlamasına sahip karmaşık formları kolayca yönetmenizi sağlar ve verilerinizin Windows Forms uygulamanız boyunca tutarlı kalmasına yardımcı olur.
Bağlı Koleksiyonlar için Dönüşüm Mantığını Yeniden Kullanma
Tim, metin dosyalarından girilen takımları ve ödülleri işlerken, dönüştürme yöntemlerinin nasıl yeniden kullanıldığını vurgular. O, bir TeamModel veya PrizeModel listesinin yeniden oluşturulduğunda, zaten tüm iç içe geçmiş verileri içerdiğini açıklar.
Bu yeniden kullanım, yalnızca veri bağlama ve model yapısı uygulama genelinde tutarlı olduğu için mümkündür. Tim, bunun daha üst seviyelerde mantığı yeniden icat etmeyi önlediğini açıkça belirtir.
Bağlama Yapısını Koruyarak Turları Erteleme Verileri
Tim, turnuva turlarını bilerek ertelemektedir. ID'lerin depolanıp daha sonra yeniden canlandırıldığı aynı prensibi izlese de, turların veri yapısının daha karmaşık olduğunu açıklıyor.
Veri bağlamanın her şeyin bir kerede uygulanmasını gerektirmediğini vurguluyor. Uygulama, veri akışını korurken gelişebilir.
Metin Bağlayıcıda Turnuva Kalıcılığını Tamamlama
Bu dersin bu noktasında, Tim bize her şeyin çalışıyormuş gibi yapmamızı istiyor—çünkü işlevsel olarak, çalıştı. Turnuva modelinin SQL konektörü ile aynı seviyeden kullanıcı arayüzünden doldurulduğunu ve ilerlemek için gereken tek şeyin bu olduğunu açıklıyor.
Artık görev tanıdık hale geliyor: Başka yerlerde zaten kullanılan aynı deseni izleyerek metne dayalı veri deposuna yeni bir turnuva girişi ekleyin.
Metin Bağlayıcısına Yeni Bir Turnuva Kimliği Atama
Tim, daha önce kullanılan aynı ID oluşturma modelini kopyalar:
Turnuva listesinin öğeler içerip içermediğini kontrol edin
ID'ye göre azalan şekilde sırala
İlkini alın
- Bir tane ekle
Bu, bir sonraki geçerli ID'yi üretir.
Daha sonra, gelen model için doğrudan bu ID'yi atar:
model.Id = currentId;
turnuvalar.Add(model);Tim olan biteni özellikle vurguluyor:
Geçirilen model artık geçerli
Bunun bir ID'si var
- Bellek içi listeye eklendi
Bu noktada, model diğer depolanmış turnuvalarla tamamen aynı şekilde ele alınır.
Turnuva Listesini Dosya Sistemine Kaydetme
Turnuva listeye eklendiğine göre, Tim bunun tekrar diske kaydedilmesi gerektiğini açıklar.
Kendini ifade ederken sık sık yaptığı gibi, ortada durup kendini düzeltiyor ve bunun bir takım kaydı değil, bir turnuva kaydı olduğunu netleştiriyor:
turnuvalar.TurnuvaDosyasınaKaydet();Bu yöntem, Metin Bağlayıcı İşlemcisi içinde bir uzantı yöntemi olarak uygulanır.
Devam etmeden önce, Tim bir derleyici hatası fark eder ve hemen durarak hatayı düzeltir. Sorun: Yöntem, bir TournamentModel listesi döndürmeli, ancak hiçbir şey döndürülmüyor.
Dönüş Değerini Düzeltme ve Deseni Sürdürme
Tim, bir yöntem bir liste döndürüyorsa, aslında bir şey döndürmesi gerektiğini açıklar.
Bunu düzeltiyor:
Yeni oluşturulan turnuvanın (TM) çıktı listesine eklenmesi
- Çıktı listesini sonunda döndürmek
O, bilerek akışı kesintiye uğrattığını açıkça belirtir; çünkü derleyici hatalarını göz ardı etmek sonradan daha kötü sorunlara yol açar.
Turnuva Dosyasını Yazma: CSV Satır Yapısı
Tim şimdi SaveToTournamentFile yöntemini oluşturuyor.
Belirlenen deseni izleyerek, o:
lines adında bir List
oluşturur Her TournamentModel için döngü yapar
- String enterpolasyonu kullanarak bir CSV satırı oluşturur
Alanlar sıkı bir sırayla düzenlenmiştir:
Turnuva ID
Turnuva Adı
Giriş Ücreti
Girilen Takımlar
Ödüller
- Turlar
Tim, tam olarak uygulanmamış alanlar için kasıtlı olarak yer tutucular bırakır.
Uzun interpolasyonlu dizgileri okunabilir tutmak için $@"..." ifadesini tanıtıyor, @ sembolünün derleyiciyi bozmadan çok satırlı dizgiler yazmanızı sağladığını açıklıyor.
Bu, işlevselliği değiştirmeden okunabilirliği artırır.
Girilen Takımları Boru ile Sınırlandırılmış Bir Dizgiye Dönüştürme
Tim şimdi ilk "ilginç" kısma ulaşıyor.
Girilen takımlar TeamModel listesidir, bu yüzden doğrudan CSV'ye yazılamazlar. Bunun yerine, Tim şu anda insanlar için kullanılan mevcut bir deseni takip eder:
Her TeamModel'in ID'sini bir dizgiye dönüştürün
ID'leri borularla (|)
- Sondaki boruyu kaldırın
Oluşturuyor:
ConvertTeamListToString(List<TeamModel> teams)Tim bu yöntemin neredeyse mevcut bir tanesi ile aynı olduğunu açıkça kabul ediyor ve şöyle diyor:
"Böyle bir şeyi kopyala-yapıştırabiliyorsan, bir yeniden yapılandırma fırsatın olduğunu bilirsin."
Ancak henüz bilinçli olarak yeniden yapılandırma yapmıyor.
Bu önemli bir öğretim anıdır: Çalışan kod, daha sonra akıllı kodu yener.
Aynı Deseni Kullanarak Ödülleri Dönüştürme
Ödüller tam olarak aynı mantığı takip eder.
Tim dönüştürücüyü tekrar kopyalar, uygun şekilde yeniden adlandırır:
ConvertPrizeListToString(List<ÖdülModeli> ödüller)Değişkenleri tutarlı bir şekilde yeniden adlandırmak ve aynı boru ile sınırlandırılmış mantığı tekrarlamak için Ctrl + Nokta kullanır.
Açıkça tekrar eden durumu kabul eder ve prensibi tekrarlar:
Get it working. Doğru yap. Then make it better.
Turları Yönetme: İç İçe Dilimleyiciler ve Artan Karmaşıklık
Turlar daha karmaşıktır çünkü:
Bir tur listesi
- Her tur bir eşleşme listesi
Tim, turları hidrate etmenin zor olduğunu ancak onların dehidrate etmenin kolay olduğunu – sadece kimliğe ihtiyacımız olduğunu açıklar.
İki seviyeli bir ayırıcı sistem tanıtıyor:
Borular (|) turları ayırır
- Şapkalar (^) bir tur içindeki eşleşmeleri ayırır
Bunu başarmak için Tim şunları oluşturur:
ConvertRoundListToString
- ConvertMatchupListToString
Her yöntem aynı yapıyı takip eder:
Döngü
Kimlikleri dilimleyicilerle ekleyin
Sondaki dilimleyiciyi kırpın
- Dizgiyi döndürün
Tim bunun kafa karıştırıcı olduğunu kabul eder, ancak desenin tutarlı kaldığını garanti eder.
MatchupModel'e Eksik Kimlikleri Eklemek
Eşleşmeleri dönüştürürken Tim önemli bir şeyi fark eder:
- MatchupModel'in kimliği yoktur.
Hemen durur ve bunu düzeltir, depolama alanına kalıcı olarak kaydedilen her modelin bir kimliği olması gerektiğini açıklar.
Bu, kursun başından beri takip ettiği temel bir mimari kuralı pekiştirir.
Dosyayı Yazmak ve Kaydetme Hattını Tamamlama
Tüm satırlar oluşturulduktan sonra Tim, başka her yerde kullanılan aynı son adımı takip eder:
Dosya.WriteAllLines(fullFilePath, satırlar);Metin Bağlayıcıdan turnuva dosyasının adını geçirir, kalıcılık akışını tamamlar.
Bu noktada, metin depolamada turnuvalar için tüm kayıt süreci uçtan uca çalışır.
Arayüz Sözleşmesini Düzeltme
Tim başka bir sorun fark eder: Metin Bağlayıcının CreateTournament yöntemi boş döner, ancak arayüz bir TournamentModel bekler.
Burada kritik bir dersi açıklar:
- Körü körüne "Arayüzü Uygula" yapmayın
Her zaman anla neden * sözleşme şikayet eder
Tim, modeli döndürmeye gerek olmadığı için arayüzü boş döndürecek şekilde yeniden yapılandırmaya karar verir.
Hem SQL hem de Metin bağlayıcılarını eşleşecek şekilde günceller, sözleşmeyi tutarlı tutar.
Bu, çalıştırma sırasında bir NotImplementedException atan bir uygulanmamış yöntem ile tehlikeli durumlardan kaçınır.
Ana Detay İlişkisi: Ebeveyn-Çocuk Veri Bağlama Uygulamada
Pek çok gerçek dünya uygulamasında, bir kaydın (ana) birçok diğer kayıtla (detaylar) ilişkili olduğu senaryolarla karşılaşacaksınız. Bu, bir ana-detay ilişkisi olarak bilinir ve Windows Formları için veri bağlamada yaygın bir desendir. Örneğin, bir sipariş (ana kayıt) birkaç sipariş detayı (çocuk kayıtlar) içerebilir ve kullanıcı arayüzünün hem sipariş bilgilerini hem de ilişkili detaylarını göstermek isteyebilirsiniz.
Windows Formları, Bağlantı Kaynağı bileşenini kullanarak bu deseni uygulamayı kolaylaştırır. Bağlantı Kaynağı, verileriniz ile kontrolleriniz arasında bir köprü görevi görür, böylece ana için bir ComboBox ve detaylar için bir DataGridView gibi iki kontrolü ilişkilendirilmiş veri kaynaklarına bağlamanıza olanak tanır. Kullanıcı başka bir ana kayıt seçtiğinde, detaylar kontrolü otomatik olarak ilgili çocuk kayıtları göstermek üzere güncellenir. Bu yaklaşım, karmaşık verilerle çalışırken özellikle güçlüdür. Verilerinizi modelinizdeki ilişkileri yansıtacak şekilde içgüdüsel, veri odaklı kullanıcı arayüzleri oluşturmanızı sağlar. Ana-detay veri bağlamadan yararlanarak, ilgili verilerin birden fazla seviyesiyle bile etkileşimli ve bakımı kolay formlar oluşturabilirsiniz.
Visual Studio Kullanarak: Tasarımcı ile Veri Bağlamayı Hızlandırma
Visual Studio, Windows Formlarında veri bağlamayı hem hızlı hem de güvenilir hale getiren zengin bir araç seti sunar. Entegre tasarımcı, boilerplate kod yazmadan veri bağlamaları oluşturmanıza ve yapılandırmanıza olanak tanır. Visual Studio, formunuza bir veri kaynağı sürükleyip bıraktığınızda gerekli kontrolleri otomatik olarak oluşturur ve bağlamaları sizin için ayarlar.
Öne çıkan özelliklerden biri, bir veri kaynağına — bir veritabanı, veri kümesi veya nesne koleksiyonu gibi — bağlanmanızı yönlendiren Veri Kaynağı Yapılandırma Sihirbazı'dır. Sihirbaz, tablolara, görünümlere veya nesnelere seçim yapmanıza yardımcı olur ve ardından bağlamaları yapılandırarak kontrollerinizin veri görüntüleme ve düzenleme için hazır hale gelmesini sağlar. Bu bağlamaları Özellikler penceresini kullanarak daha da özelleştirebilir, verilerin nasıl görüntülendiğini veya hangi alanların gösterildiğini ayarlayabilirsiniz. Bu hızlı iş akışı sadece zaman kazandırmakla kalmaz, aynı zamanda sizi uygulamanızın temel işlevselliğini oluşturmaya odaklanmanızı sağlar. Visual Studio'nun tasarımcı ve veri bağlama araçları ile sağlam, veri odaklı Windows Formları uygulamaları oluşturmak çok daha erişilebilir bir hale gelir.
Kapatma ve Eşleşmeleri Erteleme
Create Tournament düğmesi tamamen bağlandığında — eşleşmeler dışında — Tim son bir TODO ekler ve eşleşme mantığının kendi odaklanmış dersini hak ettiğini açıklar.
Görünürleri sonlandırırken hatırlatmasını yapar:
Form neredeyse tamamlandı
Uygulama çoğunlukla işlevseldir
- Temizlik ve yeniden yapılandırma daha sonra gelecek
Öncelik doğruluk, tutarlılık ve ileriye yönelik hareketti.
Sonuç
Ders 17'de, Tim Corey WinForms veri bağlamasını tanımlamak için durmaz — ancak gerçek bir uygulamada nasıl çalıştığını tam olarak gösterir. Seçilen takımlar, seçilen ödüller, doğrulanan metin girdileri ve model doldurma yoluyla Tim, bağlı kullanıcı arayüzü verilerinin iş mantığı ve kalıcılık katmanlarına doğal olarak nasıl aktığını gösterir. Windows Formları'ndaki veri bağlama mekanizması, veri kaynakları ile veri bağlı kontroller arasındaki senkronizasyonu yönetir, veri kaynağındaki veya kullanıcı arayüzündeki değişikliklerin uygulama genelinde otomatik olarak yansıtılmasını sağlar.
Tim'in bağlı listeleri doğrudan TournamentModel'e nasıl atadığını, kullanıcı girdisini nasıl doğruladığını ve tutarlı örüntüleri nasıl yeniden kullandığını izleyerek, WinForms veri bağlamasının sihirden ziyade disiplinle ilgili olduğu, verileri yapılandırılmış, tahmin edilebilir ve yeniden kullanılabilir kıldığı belirgin hale geliyor. BindingSource, en yaygın Windows Forms veri kaynağıdır ve bir veri kaynağı ile Windows Forms kontrolleri arasında bir vekil olarak hizmet verir, veri bağlama desteğinin düzeyini etkinleştiren ve geliştiren hizmetler sunar. BindingSource, basit ve karmaşık bağlama senaryolarında kullanılabilir, burada veri kaynağı ile bağlı kontroller arasında bir ara yüzey görevi görür. Karmaşık bağlı kontroller ve karmaşık bağlama, uygulamalarınızda gelişmiş veri etkileşimlerine olanak tanıyan filtreleme, sıralama ve hiyerarşik veri ilişkileri gibi ileri özellikleri etkinleştirir.
Bu ders, eşleşmeler üzerinde gelecekteki çalışmalar için zemin hazırlar ve veri bağlama doğru bir şekilde yapıldığında, her şeyin sorunsuz bir şekilde üzerine inşa edildiğini gösterir.

