BindingSource Bileşeni Mimarisi

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

BindingSourceBileşen bir veri kaynağına denetim bağlama sürecini basitleştirir ve geleneksel veri bağlama üzerinde aşağıdaki avantajları sağlar:

  • İş nesnelerine tasarım zamanı bağlamayı sağlar.

  • CurrencyManagerİşlevselliği kapsüller ve CurrencyManager olayları tasarım zamanında kullanıma sunar.

  • IBindingListListe değişikliği bildirimini yerel olarak desteklemeyen veri kaynakları için liste değişiklik bildirimi sağlayarak arabirimi destekleyen bir liste oluşturmayı basitleştirir.

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

  • Veri kaynağı ile denetim arasında bir yöneltme düzeyi sağlar. Veri kaynağı çalışma zamanında değişebilir bu yöneltme önemlidir.

  • , özellikle ve denetimleri gibi verilerle ilgili diğer Windows Forms denetimleriyle birlikte çalışır BindingNavigator DataGridView .

bu nedenlerden dolayı bileşen, BindingSource Windows Forms denetimlerinizi veri kaynaklarına bağlamak için tercih edilen yoldur.

BindingSource özellikleri

BindingSourceBileşen, denetimleri verilere bağlamak için çeşitli özellikler sağlar. Bu özelliklerle, en çok veri bağlama senaryolarını, sizin bölüminizdeki neredeyse hiçbir kodlamaya sahip olacak şekilde uygulayabilirsiniz.

BindingSourceBu bileşen, 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ğlamak için aynı yordamı kullandığınız anlamına gelir. Örneğin, DataSource özelliğini bir DataSet veya bir iş nesnesine ekleyebilirsiniz ve her iki durumda da veri kaynağını işlemek için aynı özellik, yöntem ve olay kümesini kullanırsınız.

Bileşen tarafından sunulan tutarlı arabirim, BindingSource verileri denetimlere bağlama sürecini büyük ölçüde basitleştirir. Değişiklik bildirimi sağlayan veri kaynağı türleri için, BindingSource bileşen denetim ve veri kaynağı arasındaki değişikliklere otomatik olarak iletişim kurar. Değişiklik bildirimi sağlamayan veri kaynağı türleri için, değişiklik bildirimleri yükseltmenize izin veren olaylar sağlanır. Aşağıdaki listede bileşen tarafından desteklenen özellikler gösterilmektedir BindingSource :

Yöneltme

BindingSourceBileşen, bir denetim ve veri kaynağı arasında bir yöneltme düzeyi sağlar. Bir denetimi doğrudan bir veri kaynağına bağlamak yerine, denetimi bir öğesine bağlarsınız BindingSource ve veri kaynağını BindingSource bileşenin özelliğine iliştirolursunuz DataSource .

Bu yöneltme düzeyiyle veri kaynağını denetim bağlamasını sıfırlamadan değiştirebilirsiniz. Bu size aşağıdaki olanakları sağlar:

Para birimi yönetimi

BindingSourceBileşen, ICurrencyManagerProvider sizin için para birimi yönetimini işlemek üzere arabirimini uygular. Arabirimi ile, ICurrencyManagerProvider aynı zamanda bir diğeri için para birimi BindingSource yöneticisinin yanı sıra bir için para birimi yöneticisine da erişebilirsiniz BindingSource DataMember .

BindingSourceBileşen işlevleri Kapsüller CurrencyManager ve en sık kullanılan CurrencyManager özellikleri ve olayları gösterir. Aşağıdaki tabloda, para birimi yönetimiyle ilgili bazı Üyeler açıklanmaktadır.

CurrencyManager özelliði
İle ilişkili para birimi yöneticisini alır BindingSource .

GetRelatedCurrencyManager yöntemi
BindingSourceBelirtilen veri üyesine bir tane daha varsa, bu, para birimi yöneticisini alır.

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

Position özelliði
Temel alınan listedeki geçerli konumu alır veya ayarlar.

EndEdit yöntemi
Temel alınan veri kaynağına bekleyen değişiklikleri uygular.

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

Liste olarak veri kaynağı

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

BindingSourceBileşen bir veri kaynağına eklendiğinde, veri kaynağını bir liste olarak kullanıma sunar.

DataSourceÖzelliği, çeşitli veri kaynaklarına ayarlanabilir. Bunlar türleri, nesneleri ve tür listelerini içerir. Elde edilen veri kaynağı bir liste olarak gösterilir. Aşağıdaki tabloda bazı ortak veri kaynakları ve elde edilen liste değerlendirmesi gösterilmektedir.

DataSource özelliği Liste sonuçları
Null başvurusu ( Nothing Visual Basic) IBindingListNesnelerden oluşan boş bir nesne. Öğe eklendiğinde liste eklenen öğenin türüne ayarlanır.
küme ile null başvuru ( Nothing Visual Basic) DataMember Desteklenmiyor; yükseltir ArgumentException .
"T" türünde liste olmayan tür veya nesne IBindingList"T" türünde boş.
Dizi örneği IBindingListDizi öğelerini içeren bir.
IEnumerable Instance IBindingListÖğeleri içeren bir IEnumerable
"T" türünü içeren liste örneği IBindingList"T" türünü içeren örnek.

Ayrıca, DataSource ve gibi diğer liste türlerine ayarlanabilir IListSource ITypedList ve BindingSource bunları uygun şekilde işleymeyecektir. Bu durumda, listede yer alan türün parametresiz bir oluşturucusu olmalıdır.

IBindingList olarak BindingSource

BindingSourceBileşeni, temel alınan verilere erişmek ve bu verileri işlemek için Üyeler sağlar IBindingList . Aşağıdaki tabloda bu üyelerin bazıları açıklanmaktadır.

Üye Açıklama
List özelliði Veya özelliklerinin değerlendirmesinden elde edilen listeyi alır DataSource DataMember .
AddNew yöntemi Temel alınan listeye yeni bir öğe ekler. IBindingListArabirimi uygulayan ve öğe eklemeye izin veren veri kaynakları için geçerlidir (yani, AllowNew özelliği olarak ayarlanır true ).

Özel öğe oluşturma

AddingNewKendi öğe oluşturma mantığınızı sağlamak için olayı işleyebilirsiniz. AddingNewOlayı, öğesine yeni bir nesne eklenmeden önce oluşur BindingSource . Bu olay, AddNew yöntemi çağrıldıktan sonra, ancak yeni öğe temel alınan listeye eklenmeden önce tetiklenir. Bu olayı işleyerek, sınıftan türemeksizin özel öğe oluşturma davranışı sağlayabilirsiniz BindingSource . daha fazla bilgi için bkz. nasıl yapılır: Windows Forms BindingSource ile öğe eklemeyi özelleştirme.

İşlem öğesi oluşturma

BindingSourceBileşen, ICancelAddNew işlem öğesi oluşturmaya izin veren arabirimini uygular. Yeni bir öğe çağrısı kullanılarak geçici olarak oluşturulduktan sonra AddNew , ekleme işlemi aşağıdaki yollarla uygulanabilir veya geri döndürülebilir:

  • EndNewYöntemi, bekleyen ekleme işlemi açıkça uygulanır.

  • Ekleme, kaldırma veya taşıma gibi başka bir koleksiyon işlemi gerçekleştirmek, bekleyen ekleme işlemini örtülü olarak işlemeye çalışır.

  • Yöntem CancelNew henüz yürütülmemiş ise Yöntem, bekleyen eklemeyi geri alacak.

IEnumerable desteği

BindingSourceBileşen, veri kaynaklarına denetim bağlamayı sağlar IEnumerable . Bu bileşenle, gibi bir veri kaynağına bağlanabilirsiniz System.Data.SqlClient.SqlDataReader .

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

Design-Time desteği

Bir fabrika sınıfından oluşturulan nesneler veya bir Web hizmeti tarafından döndürülen nesneler gibi tasarım zamanında bazı nesne türleri oluşturulamaz. Denetimlerinizin bağlayabileceği bellekte hiç nesne olmasa bile, bazı durumlarda denetimlerinizi bu türlere tasarım zamanında bağlamanız gerekebilir. Örneğin, bir denetimin sütun üstbilgilerini DataGridView özel türün ortak özelliklerinin adlarıyla etiketlemenize gerek vardır.

Bu senaryoyu desteklemek için BindingSource bileşen bir ' a bağlamayı destekler Type . Özelliğine bir atadığınızda Type DataSource , BindingSource bileşen bir öğe boş oluşturur BindingList<T> Type . Daha sonra bileşene daha sonra bağlanan denetimler, BindingSource tasarım zamanında veya çalışma zamanında, yazdığınız özelliklerin veya şemanın varlığı ile ilgili olarak uyarılacaktır. daha fazla bilgi için bkz. nasıl yapılır: Windows Forms denetimini bir türe bağlama.

Statik ListBindingHelper yöntemleri

System.Windows.Forms.BindingContext, System.Windows.Forms.CurrencyManager Ve BindingSource türleri bir DataSource / çiftin listesini oluşturmak için tüm ortak mantığı paylaşır DataMember . Ayrıca, bu ortak mantık aşağıdaki yöntemlerde denetim yazarları ve diğer üçüncü taraflar tarafından kullanıma açıktır static :

IBindingListView arabirimiyle sıralama ve filtreleme

BindingSourceBileşen arabirimini IBindingListView genişleten arabirimini uygular IBindingList . IBindingListTek sütunlu sıralama ve IBindingListView Gelişmiş sıralama ve filtreleme olanakları sunar. İle veri IBindingListView kaynağı bu arabirimlerden birini de uygularsa, veri kaynağındaki öğeleri sıralayabilir ve filtreleyebilirsiniz. BindingSourceBileşen bu üyelerin başvuru uygulamasını sağlamıyor. Bunun yerine, çağrılar temel alınan listeye iletilir.

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

Üye Açıklama
Filter özelliði Veri kaynağı bir ise IBindingListView , hangi satırların görüntülendiğini filtrelemek için kullanılan ifadeyi alır veya ayarlar.
Sort özelliði Veri kaynağı bir ise IBindingList , sıralama ve sıralama bilgileri için kullanılan bir sütun adı alır veya ayarlar.

-veya-

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

BindingNavigator ile tümleştirme

BindingSourcebileşeni, herhangi bir Windows Forms denetimini bir veri kaynağına bağlamak için kullanabilirsiniz, ancak BindingNavigator denetim özellikle bileşenle çalışmak üzere tasarlanmıştır BindingSource . BindingNavigatorDenetim, bileşenin geçerli öğesini denetlemek için bir kullanıcı arabirimi sağlar BindingSource . Varsayılan olarak denetim, BindingNavigator bileşendeki gezinti yöntemlerine karşılık gelen düğmeleri sağlar BindingSource . daha fazla bilgi için bkz. nasıl yapılır: Windows Forms BindingNavigator denetimi ile verilerde gezinme.

Ayrıca bkz.