Veri Bağlama ile İlgili Arabirimler
Bu ADO.NET, uygulamanın bağlama ihtiyaçlarına ve üzerinde çalışmakta olan verilere uygun birçok farklı veri yapısı oluşturabilirsiniz. Windows Forms'da veri sağlayan veya tüketen kendi sınıflarınızı oluşturmak Windows. Bu nesneler, temel veri bağlamadan tasarım zamanı desteği, hata denetimi, değişiklik bildirimi sağlama ve hatta verilerde yapılan değişikliklerin yapılandırılmış geri alma desteğine kadar değişen işlevsellik ve karmaşıklık düzeyleri sunar.
Data-Binding Arabirimlerinin Tüketicileri
Aşağıdaki bölümlerde iki arabirim nesnesi grubu açıklanmaktadır. İlk grup, veri kaynağı yazarları tarafından veri kaynaklarına uygulanan arabirimleri listeler. Bu arabirimler veri kaynağı tüketicileri tarafından, çoğu durumda form denetimleri veya bileşenleri Windows için tasarlanmıştır. İkinci grup, bileşen yazarları tarafından kullanım için tasarlanmış arabirimleri listeler. Bileşen yazarları, Windows Forms veri bağlama altyapısı tarafından tüketilmesi için veri bağlamayı destekleyen bir bileşen oluştururken bu arabirimleri kullanır. Bu arabirimleri, veri bağlamayı etkinleştirmek için form ile ilişkili sınıflarda gerçekleştirebilirsiniz; her durumda, verilerle etkileşimi sağlayan bir arabirim uygulayan bir sınıf sunar. Visual Studio uygulama geliştirme (RAD) veri tasarımı deneyimi araçları bu işlevden zaten faydalanıyor.
Veri Kaynağı Yazarlarının Uygulama Arabirimleri
Aşağıdaki arabirimler, Formlar denetimleri tarafından Windows tasarlanmıştır:
IList Arabirim
Arabirimi uygulayan bir IList sınıf , veya ArrayArrayListCollectionBase olabilir. Bunlar türünde öğelerin dizinli Object listeleridir. Bu listeler homojen türler içermeli çünkü dizinin ilk öğesi türü belirler. IList yalnızca çalışma zamanında bağlama için kullanılabilir.
Not
Windows Forms ile bağlama için iş nesnelerinin listesini oluşturmak Windows kullanmayı BindingList<T> düşünebilirsiniz. , Forms veri bağlama için iki yollu arabirimler için gereken birincil arabirimleri BindingList<T> uygulayan Windows sınıfıdır.
IBindingList Arabirim
Arabirimi uygulayan bir IBindingList sınıf, çok daha yüksek düzeyde veri bağlama işlevi sağlar. Bu uygulama, hem liste öğelerinin değişmesi (örneğin, bir müşteri listesinde üçüncü öğenin Adres alanında bir değişiklik olması) hem de listenin kendi değişmesi (örneğin, listedeki öğe sayısı arttıkça veya azaldığı) için temel sıralama özellikleri ve değişiklik bildirimi sunar. Aynı verilere bağlı birden fazla denetime sahip olmak ve denetimlerden biri üzerinde yapılan veri değişikliklerinin diğer sınır denetimlerine yayılmasını istediğinizde değişiklik bildirimi önemlidir.
Not
Değişiklik bildirimi, arabirimi için özelliği aracılığıyla etkinleştirildiğinde, listenin değiştiğini veya listede bir öğenin değiştiğini belirten bir IBindingListSupportsChangeNotification olay meydana
trueListChanged gelir.Değişiklik türü parametresinin ListChangedType özelliği tarafından ListChangedEventArgs açıklanmıştır. Bu nedenle, veri modeli her güncelleştirildiğinde, aynı veri kaynağına bağlı diğer denetimler gibi tüm bağımlı görünümler de güncelleştirilir. Ancak, listenin içinde yer alan nesnelerin listeyi değiştirerek olayı oluşturması için bildirim vermesi ListChanged gerekir.
Not
BindingList<T>, arabiriminin genel bir uygulamasını IBindingList sağlar.
IBindingListView Arabirim
arabirimini uygulayan bir sınıf, bir uygulamasının tüm işlevlerinin yanı sıra filtreleme IBindingListView ve gelişmiş sıralama işlevselliği IBindingList sağlar. Bu uygulama, özellik tanımlayıcısı yön çiftleriyle dize tabanlı filtreleme ve çok öğeli sıralama sunar.
IEditableObject Arabirim
Arabirimi uygulayan bir IEditableObject sınıf, bir nesnenin nesnede yapılan değişikliklerin kalıcı hale ne zaman uygulandığını denetlemeye olanak sağlar. Bu uygulama, nesnede yapılan değişiklikleri geri alma olanaklarını BeginEdit sağlayan , ve yöntemlerini EndEditCancelEdit sağlar. Aşağıda, , ve yöntemlerinin çalışması ve verilerde yapılan değişikliklerin olası geri alma olanaklarını sağlamak için bunların birlikte nasıl çalışıp çalışmalarına ilişkin kısa BeginEdit bir açıklama ve açıklama yer EndEditCancelEdit almaktadır:
yöntemi, BeginEdit bir nesne üzerinde düzenlemenin başlat olduğunu gösterir. Bu arabirimi uygulayan bir nesnenin yöntem çağrısının ardından yöntem çağrılmışsa güncelleştirmelerin atılacak şekilde tüm güncelleştirmeleri BeginEditCancelEdit depolaması gerekir. Veri bağlama Windows Forms'da, tek bir düzenleme işlemi kapsamında birden çok kez BeginEdit çağırabilirsiniz (örneğin, BeginEdit , , BeginEditEndEdit ). uygulamaları, IEditableObject önceden çağrılıp çağrılmamalarını izlemeli ve BeginEdit sonraki çağrılarını yoksaymalı. BeginEdit Bu yöntem birden çok kez çağrılanana kadar sonraki çağrıların yıkıcı olması önemlidir; diğer bir ifadeyle, sonraki çağrılar yapılan güncelleştirmeleri yok edebilir veya BeginEdit ilk çağrıda kaydedilen verileri BeginEdit değiştiremez.
yöntemi, nesne şu anda düzenleme modundayken temel alınan nesneye EndEditBeginEdit çağrıldıklarında yapılan değişiklikleri iletir.
yöntemi CancelEdit nesnede yapılan tüm değişiklikleri atar.
, ve yöntemlerinin çalışması BeginEdit hakkında daha fazla bilgi için EndEditCancelEditBeginEdit
Bu işlemsel veri işlevselliği, denetim tarafından DataGridView kullanılır.
ICancelAddNew Arabirim
Arabirimi uygulayan bir sınıf genellikle arabirimini kullanır ve yöntemiyle veri kaynağına yapılan bir ICancelAddNewIBindingList eklemeyi geri AddNew alasiniz. Veri kaynağınız arabirimi IBindingList uygulayıyorsa, arabirimi de uygulaması ICancelAddNew gerekir.
IDataErrorInfo Arabirim
Arabirimi uygulayan bir IDataErrorInfo sınıf, nesnelerin bağlı denetimlere özel hata bilgileri sunmalarını sağlar:
IEnumerable Arabirim
Arabirimi uygulayan bir IEnumerable sınıf genellikle ASP.NET. Windows Forms desteği yalnızca bileşen aracılığıyla BindingSource kullanılabilir.
Not
Bileşen, BindingSource bağlama amacıyla tüm öğeleri ayrı bir listeye IEnumerable kopyalar.
ITypedList Arabirim
Arabirimini uygulayan koleksiyonlar sınıfı, bağlı denetime açık olan ITypedList sırayı ve özellik kümelerini denetleme olanağı sağlar.
Not
yöntemini uygulayan ve dizi null değilken, dizideki son giriş, başka bir öğe listesi olan list özelliğini açıklayan özellik GetItemPropertiesPropertyDescriptor tanımlayıcısı olacaktır.
ICustomTypeDescriptor Arabirim
Arabirimi uygulayan bir ICustomTypeDescriptor sınıf kendisi hakkında dinamik bilgiler sağlar. Bu arabirim ile ITypedList benzerdir ancak listeler yerine nesneler için kullanılır. Bu arabirim, tarafından DataRowView temel alınan satırların şemasını projek için kullanılır. basit bir uygulaması ICustomTypeDescriptor sınıfı tarafından CustomTypeDescriptor sağlanır.
Not
uygulayan türlere tasarım zamanı bağlamayı desteklemek için, türün form üzerinde bir örnek olarak ICustomTypeDescriptor da uygulaması ve mevcut olması IComponent gerekir.
IListSource Arabirim
arabirimini uygulayan bir IListSource sınıf, liste olmayan nesnelerde liste tabanlı bağlamayı sağlar. GetListyöntemi, IListSource 'den devralmaz bir nesneden bağlanabilir bir liste dönmek için IList kullanılır. IListSource sınıfı tarafından DataSet kullanılır.
IRaiseItemChangedEvents Arabirim
Arabirimi uygulayan bir IRaiseItemChangedEvents sınıf, arabirimini de uygulayan bağlanabilir bir IBindingList listedir. Bu arabirim, türün özelliği aracılığıyla türünde olaylar ListChanged yükselterek bunu belirtmek ItemChanged için RaisesItemChangedEvents kullanılır.
Not
Veri kaynağınız daha önce açıklanan ve bileşenle etkileşimde bulunmak için olay dönüştürmeyi listele özelliğini IRaiseItemChangedEvents sağlarsa, uygulaması BindingSource gerekir. Aksi takdirde, BindingSource daha yavaş performansa neden olan olay dönüştürmeyi listeleye özelliği de gerçekleştirecek.
ISupportInitialize Arabirim
Arabirimi uygulayan bir bileşen, özellikleri ayarlamaya ve ortak bağımlı özellikleri başlatmaya ISupportInitialize için toplu iyileştirmelerden avantaj sağlar. iki ISupportInitialize yöntem içerir:
ISupportInitializeNotification Arabirim
Arabirimi uygulayan bir ISupportInitializeNotification bileşen de ISupportInitialize arabirimini uygulayan bir bileşendir. Bu arabirim, başlatmanın tamam olduğunu ISupportInitialize diğer bileşenlere bildirmeye olanak sağlar. Arabirim ISupportInitializeNotification iki üye içerir:
IsInitialized ,
booleanbileşenin başlatılmış olup olmadığını belirten bir değer döndürür.Initialized çağrılsa EndInit gerçekleşir.
INotifyPropertyChanged Arabirim
Bu arabirimi uygulayan bir sınıf, özellik değerlerden herhangi biri değiştirilsinken bir olay yükselten bir tür olur. Bu arabirim, denetimin her özelliği için bir değişiklik olayına sahip olmak desenini değiştirmek için tasarlanmıştır. bir içinde BindingList<T> kullanılırken, bir iş nesnesi arabirimini INotifyPropertyChanged uygulamalı ve BindingList'1 olayları PropertyChanged türünde ListChanged olaylara ItemChanged dönüştürür.
Not
Değişiklik bildiriminin bir bağlı istemci ile veri kaynağı arasında bir bağlamada gerçekleşmesi için, bağlı veri kaynağı türü arabirimi (tercih edilir) uygulamalı veya bağlı tür için propertyName olayları sağlayabilirsiniz, ancak ikisini birden INotifyPropertyChangedINotifyPropertyChanged
Changedyapmamalıdır.
Bileşen Yazarlarının Uygulama Arabirimleri
Aşağıdaki arabirimler, Windows Forms veri bağlama altyapısı tarafından kullanım için tasarlanmıştır:
IBindableComponent Arabirim
Bu arabirimi uygulayan bir sınıf, veri bağlamayı destekleyen denetim dışı bir bileşendir. Bu sınıf, bu arabirimin ve özellikleri aracılığıyla bileşenin veri DataBindings bağlamalarını ve BindingContext bağlama bağlamını döndürür.
Not
Bileşeniniz 'den Control devralıyorsa, arabirimini uygulamanız IBindableComponent gerekli değildir.
ICurrencyManagerProvider Arabirim
Arabirimi uygulayan bir sınıf, bu bileşenle ilişkili bağlamaları yönetmek için kendi sağlayan ICurrencyManagerProviderCurrencyManager bir bileşendir. Özele erişim CurrencyManager özelliği tarafından CurrencyManager sağlanır.
Not
sınıfından devralınan bir sınıf bağlamaları özelliği aracılığıyla otomatik olarak yönetir, bu nedenle uygulaması gereken durumlar ControlBindingContext oldukça ICurrencyManagerProvider nadirdir.