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:

    • özelliği Error genel hata iletisi metnini döndürür (örneğin, "Bir hata oluştu").

    • özelliği, sütundan belirli bir hata iletisi içeren bir dize Item[] döndürür ("sütundaki değer State geçersiz" gibi).

  • 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:

    • BeginInit nesne başlatmanın başlat aşamasında olduğunu gösterir.

    • EndInit nesne başlatmanın tamam olduğunu gösterir.

  • 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:

  • 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 INotifyPropertyChangedINotifyPropertyChangedChanged yapmamalı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:

Ayrıca bkz.