BindingSource Bileşen Mimarisi

BindingSource bileşeniyle, tüm Windows Forms denetimlerini veri kaynaklarına evrensel olarak bağlayabilirsiniz.

BindingSource bileşeni, denetimleri bir veri kaynağına bağlama işlemini basitleştirir ve geleneksel veri bağlamaya göre aşağıdaki avantajları sağlar:

  • İş nesnelerine tasarım zamanı bağlamayı etkinleştirir.

  • CurrencyManager işlevleri kapsüller ve tasarım zamanı CurrencyManager olaylarını kullanıma sunar.

  • Yerel olarak liste değişikliği bildirimini desteklemeyen veri kaynakları için liste değişikliği bildirimi sağlayarak IBindingList arabirimini destekleyen bir liste oluşturmayı kolaylaştırır.

  • IBindingList.AddNew yöntemi için bir genişletilebilirlik noktası sağlar.

  • Veri kaynağı ile denetim arasında bir dolaylılık düzeyi sağlar. Bu dolaylılık, veri kaynağının çalışma zamanında değişebileceği durumlarda önemlidir.

  • Verilerle ilgili diğer Windows Forms denetimleriyle, özellikle de BindingNavigator ve DataGridView denetimleriyle birlikte çalışabilir.

Bu nedenlerden dolayı, Windows Forms denetimlerinizi veri kaynaklarına bağlamanın tercih edilen yolu BindingSource bileşenidir.

BindingSource Özellikleri

BindingSource bileşeni, denetimleri verilere bağlamaya yönelik çeşitli özellikler sağlar. Bu özelliklerle, neredeyse hiç kodlama içermeyen veri bağlama senaryolarının çoğunu uygulayabilirsiniz.

BindingSource bileşeni, birçok farklı türdeki veri kaynağına erişmek için tutarlı bir arabirim sağlayarak bunu gerçekleştirir. Bu, herhangi bir türe bağlanma için aynı yöntemi kullandığınız anlamına gelir. Örneğin, DataSource özelliğini bir DataSet veya iş nesnesine ekleyebilir ve her iki durumda da veri kaynağını işlemek için aynı özellik, yöntem ve olay kümesini kullanırsınız.

BindingSource bileşeni tarafından sağlanan tutarlı arabirim, verileri denetimlere bağlama işlemini büyük ölçüde basitleştirir. Değişiklik bildirimi sağlayan veri kaynağı türleri için, BindingSource bileşeni denetim ile veri kaynağı arasındaki değişiklikleri otomatik olarak iletir. Değişiklik bildirimi sağlamayan veri kaynağı türleri için, değişiklik bildirimleri oluşturmanızı sağlayan olaylar sağlanır. Aşağıdaki listede, BindingSource bileşeni tarafından desteklenen özellikler gösterilmektedir:

Dolaylılık

BindingSource bileşeni, denetimle veri kaynağı arasında bir dolaylılık düzeyi sağlar. Bir denetimi doğrudan bir veri kaynağına bağlamak yerine, denetimi bir BindingSourcebağlar ve veri kaynağını BindingSource bileşeninin DataSource özelliğine eklersiniz.

Bu dolaylılık düzeyiyle, denetim bağlamasını sıfırlamadan veri kaynağını değiştirebilirsiniz. Bu size aşağıdaki özellikleri sağlar:

  • Geçerli denetim bağlamalarını korurken BindingSource farklı veri kaynaklarına ekleyebilirsiniz.

  • Veri kaynağındaki öğeleri değiştirebilir ve ilişkili denetimlere bildirebilirsiniz. Daha fazla bilgi için bkz. Nasıl yapılır: BindingSourceile Windows Forms Denetiminde Veri Kaynağı Güncelleştirmelerini Yansıtma.

  • Bellekteki bir nesne yerine bir Type'ye bağlanabilirsiniz. Daha fazla bilgi için bkz. Windows Forms Denetimini bir TüreNasıl Bağlarsınız. Daha sonra çalışma zamanında bir nesneye bağlanabilirsiniz.

Para Birimi Yönetimi

BindingSource bileşeni, para birimi yönetimini sizin için işlemek için ICurrencyManagerProvider arabirimini uygular. ICurrencyManagerProvider arabirimiyle, aynı BindingSource'e bağlı olan başka bir BindingSource için para birimi yöneticisine ek olarak, bir DataMemberiçin para birimi yöneticisine de erişebilirsiniz.

BindingSource bileşeni CurrencyManager işlevselliğini kapsar ve en yaygın CurrencyManager özelliklerini ve olaylarını sağlar. Aşağıdaki tabloda para birimi yönetimiyle ilgili bazı üyeler açıklanmaktadır.

CurrencyManager özelliği ile bağlantılı olan para birimi yöneticisini alır BindingSource.

Eğer belirli bir veri üyesine başka bir GetRelatedCurrencyManager bağlıysa, BindingSource yöntemi, onun para birimi yöneticisini alır.

Current özelliği Veri kaynağının geçerli öğesini alır.

Position özelliği, temel alınan listede geçerli konumu alır veya ayarlar.

EndEdit yöntemi Altında yatan veri kaynağına bekleyen değişiklikleri uygular.

Geçerli düzenleme işlemini iptal eder CancelEdit yöntemi.

Veri Kaynağı Olarak Liste

BindingSource bileşeni IBindingListView ve ITypedList arabirimlerini uygular. Bu uygulamayla, BindingSource bileşeninin kendisini herhangi bir dış depolama alanı olmadan veri kaynağı olarak kullanabilirsiniz.

BindingSource bileşeni bir veri kaynağına eklendiğinde, veri kaynağını liste olarak kullanıma sunar.

DataSource özelliği çeşitli veri kaynaklarına ayarlanabilir. Bunlar türler, nesneler ve tür listeleridir. Sonuçta elde edilen veri kaynağı liste olarak gösterilir. Aşağıdaki tabloda bazı yaygın veri kaynakları ve sonuçta elde edilen liste değerlendirmesi gösterilmektedir.

DataSource özelliği Sonuçları listeleme
Null başvuru (Visual Basic'teNothing) Nesnelerden oluşan boş bir IBindingList. Öğe ekleme, listeyi eklenen öğenin türüne ayarlar.
Visual Basic'teNothing ile belirtilmiş ve DataMember ayarlanmış bir boş başvuru Desteklenmez; ArgumentExceptionhatasını oluşturur.
Liste dışı tür veya "T" türündeki nesne "T" türünde boş bir IBindingList.
Dizi örneği Bir IBindingList, dizi öğelerini içerir.
IEnumerable örneği IBindingList öğelerini içeren bir IEnumerable
"T" türü içeren liste örneği "T" türünü içinde bulunduran bir IBindingList örneği.

Ayrıca, DataSourceIListSource ve ITypedListgibi diğer liste türlerine ayarlanabilir ve BindingSource bunları uygun şekilde işler. Bu durumda, listede yer alan türün parametresiz bir oluşturucuya sahip olması gerekir.

BindingSource IBindingList olarak

BindingSource bileşeni, IBindingListolarak temel alınan verilere erişmek ve bunları işlemek için üyeler sağlar. Aşağıdaki tabloda bu üyelerden bazıları açıklanmaktadır.

Üye Açıklama
List özellik DataSource veya DataMember özelliklerinin değerlendirilmesinden kaynaklanan listeyi alır.
AddNew yöntemi Temel alınan listeye yeni bir öğe ekler. IBindingList arabirimini uygulayan ve öğelerin eklenmesine izin veren veri kaynakları için geçerlidir (yani, AllowNew özelliği trueolarak ayarlanır).

Özel Öğe Oluşturma

Kendi öğe oluşturma mantığınızı uygulamak için AddingNew olayını işleyebilirsiniz. AddingNew olayı, BindingSourceyeni bir nesne eklenmeden önce gerçekleşir. Bu olay, AddNew yöntemi çağrıldıktan sonra, ancak yeni öğe temel alınan listeye eklenmeden önce oluşturulur. Bu olayı işleyerek, BindingSource sınıfından türetmeden özel öğe oluşturma davranışı sağlayabilirsiniz. Daha fazla bilgi için bkz. Nasıl yapılır: Windows Forms BindingSourceile Öğe Eklemeyi Özelleştirme.

İşlem Öğesi Oluşturma

BindingSource bileşeni, işlem öğesi oluşturmaya olanak tanıyan ICancelAddNew arabirimini uygular. AddNewçağrısı kullanılarak yeni bir öğe geçici olarak oluşturulduktan sonra, ekleme aşağıdaki yollarla işlenebilir veya geri alınabilir:

  • EndNew yöntemi, bekleyen eklemeyi açıkça taahhüt eder.

  • Ekleme, kaldırma veya taşıma gibi başka bir koleksiyon işlemi gerçekleştirmek, bekleyen eklemeyi örtük olarak işler.

  • CancelNew yöntemi, henüz onaylanmamışsa bekleyen eklemeyi geri alır.

IEnumerable Desteği

BindingSource bileşeni, bağlama denetimlerinin IEnumerable veri kaynaklarına bağlanmasını sağlar. Bu bileşenle, System.Data.SqlClient.SqlDataReadergibi bir veri kaynağına bağlanabilirsiniz.

IEnumerable bileşenine bir BindingSource veri kaynağı atandığında, BindingSource bir IBindingList oluşturur ve IEnumerable veri kaynağının içeriğini listeye ekler.

Design-Time Desteği

Fabrika sınıfından oluşturulan nesneler veya Web hizmeti tarafından döndürülen nesneler gibi bazı nesne türleri tasarım zamanında oluşturulamaz. Bellekte denetimlerinizin bağlanabileceği bir nesne olmasa bile, bazen denetimlerinizi tasarım zamanında bu türlere bağlamanız gerekebilir. Örneğin, bir DataGridView denetiminin sütun üst bilgilerini özel türünüzün genel özelliklerinin adlarıyla etiketlemeniz gerekebilir.

Bu senaryoyu desteklemek için BindingSource bileşeni bir Typebağlamayı destekler. Type özelliğine bir DataSource atadığınızda, BindingSource bileşeni BindingList<T> öğeden oluşan boş bir Type oluşturur. Daha sonra BindingSource bileşenine bağladığınız tüm denetimler, tasarım zamanında veya çalışma zamanında türünüzün özelliklerinin veya şemasının varlığı konusunda uyarılır. Daha fazla bilgi için bkz. Windows Forms Denetimini bir TüreNasıl Bağlarsınız.

Static ListBindingHelper Yöntemleri

System.Windows.Forms.BindingContext, System.Windows.Forms.CurrencyManagerve BindingSource türlerinin tümü ortak mantığı paylaşarak bir DataSource/DataMember çiftinden liste oluşturur. Ayrıca, bu ortak mantık aşağıdaki static yöntemlerinde denetim yazarları ve diğer üçüncü taraflar tarafından kullanılmak üzere genel kullanıma sunulur:

IBindingListView Arabirimi ile Sıralama ve Filtreleme

BindingSource bileşeni, IBindingListView arabirimini genişleten IBindingList arabirimini uygular. IBindingList tek sütunlu sıralama, IBindingListView ise gelişmiş sıralama ve filtreleme sunar. IBindingListViewile, veri kaynağı bu arabirimlerden birini de uyguluyorsa, veri kaynağındaki öğeleri sıralayabilir ve filtreleyebilirsiniz. BindingSource bileşeni bu üyelerin örnek uygulamasını sağlamaz. Bunun yerine, çağrılar altta yatan listeye iletilir.

Aşağıdaki tabloda, sıralama ve filtreleme için kullandığınız özellikler açıklanmaktadır.

Üye Açıklama
Filter özellik Veri kaynağı bir IBindingListViewise, hangi satırların görüntüleneceğini filtrelemek için kullanılan ifadeyi alır veya ayarlar.
Sort özellik Veri kaynağı bir IBindingListise, sıralama için kullanılan ve sıralama düzeni bilgilerini içeren sütun adını alır veya ayarlar.

-veya-

Veri kaynağı bir IBindingListView ise ve gelişmiş sıralamayı destekliyorsa, sıralama ve sıralama düzeni için kullanılan birden çok sütun adını alır

BindingNavigator ile tümleştirme

Herhangi bir Windows Forms denetimini bir veri kaynağına bağlamak için BindingSource bileşenini kullanabilirsiniz, ancak BindingNavigator denetimi özellikle BindingSource bileşeniyle çalışacak şekilde tasarlanmıştır. BindingNavigator denetimi, BindingSource bileşenin geçerli öğesini denetlemek için bir kullanıcı arabirimi sağlar. Varsayılan olarak, BindingNavigator denetimi BindingSource bileşenindeki gezinti yöntemlerine karşılık gelen düğmeler sağlar. Daha fazla bilgi için bkz. Windows Forms BindingNavigator Kontrolü ile Veri Gezinme Nasıl Yapılır.

Ayrıca bakınız