BindingContext Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
sınıfından BindingManagerBase devralan Control herhangi bir nesne için nesne koleksiyonunu yönetir.
public ref class BindingContext : System::Collections::ICollection
public class BindingContext : System.Collections.ICollection
type BindingContext = class
interface ICollection
interface IEnumerable
Public Class BindingContext
Implements ICollection
- Devralma
-
BindingContext
- Uygulamalar
Örnekler
Aşağıdaki kod örneği, birkaç veri kaynağına beş denetim (bir DateTimePicker ve dört denetim) bağlamak için dört BindingTextBox nesne oluşturur. BindingContext Daha sonra her veri kaynağı için öğesini BindingManagerBase almak için kullanılır.
void BindControls()
{
/* Create two Binding objects for the first two TextBox
controls. The data-bound property for both controls
is the Text property. The data source is a DataSet
(ds). The data member is a navigation path in the form:
"TableName.ColumnName". */
text1->DataBindings->Add( gcnew Binding( "Text",ds,"customers.custName" ) );
text2->DataBindings->Add( gcnew Binding( "Text",ds,"customers.custID" ) );
/* Bind the DateTimePicker control by adding a new Binding.
The data member of the DateTimePicker is a navigation path:
TableName.RelationName.ColumnName string. */
DateTimePicker1->DataBindings->Add( gcnew Binding( "Value",ds,"customers.CustToOrders.OrderDate" ) );
/* Add event delegates for the Parse and Format events to a
new Binding object, and add the object to the third
TextBox control's BindingsCollection. The delegates
must be added before adding the Binding to the
collection; otherwise, no formatting occurs until
the Current object of the BindingManagerBase for
the data source changes. */
Binding^ b = gcnew Binding( "Text",ds,"customers.custToOrders.OrderAmount" );
b->Parse += gcnew ConvertEventHandler( this, &Form1::CurrencyStringToDecimal );
b->Format += gcnew ConvertEventHandler( this, &Form1::DecimalToCurrencyString );
text3->DataBindings->Add( b );
// Get the BindingManagerBase for the Customers table.
bmCustomers = this->BindingContext[ ds,"Customers" ];
/* Get the BindingManagerBase for the Orders table using the
RelationName. */
bmOrders = this->BindingContext[ds, "customers.CustToOrders"];
/* Bind the fourth TextBox control's Text property to the
third control's Text property. */
text4->DataBindings->Add( "Text", text3, "Text" );
}
protected void BindControls()
{
/* Create two Binding objects for the first two TextBox
controls. The data-bound property for both controls
is the Text property. The data source is a DataSet
(ds). The data member is a navigation path in the form:
"TableName.ColumnName". */
text1.DataBindings.Add(new Binding
("Text", ds, "customers.custName"));
text2.DataBindings.Add(new Binding
("Text", ds, "customers.custID"));
/* Bind the DateTimePicker control by adding a new Binding.
The data member of the DateTimePicker is a navigation path:
TableName.RelationName.ColumnName string. */
DateTimePicker1.DataBindings.Add(new
Binding("Value", ds, "customers.CustToOrders.OrderDate"));
/* Add event delegates for the Parse and Format events to a
new Binding object, and add the object to the third
TextBox control's BindingsCollection. The delegates
must be added before adding the Binding to the
collection; otherwise, no formatting occurs until
the Current object of the BindingManagerBase for
the data source changes. */
Binding b = new Binding
("Text", ds, "customers.custToOrders.OrderAmount");
b.Parse+=new ConvertEventHandler(CurrencyStringToDecimal);
b.Format+=new ConvertEventHandler(DecimalToCurrencyString);
text3.DataBindings.Add(b);
// Get the BindingManagerBase for the Customers table.
bmCustomers = this.BindingContext [ds, "Customers"];
/* Get the BindingManagerBase for the Orders table using the
RelationName. */
bmOrders = this.BindingContext[ds, "customers.CustToOrders"];
/* Bind the fourth TextBox control's Text property to the
third control's Text property. */
text4.DataBindings.Add("Text", text3, "Text");
}
Protected Sub BindControls()
' Create two Binding objects for the first two TextBox
' controls. The data-bound property for both controls
' is the Text property. The data source is a DataSet
' (ds). The data member is the string
' "TableName.ColumnName".
text1.DataBindings.Add(New Binding _
("Text", ds, "customers.custName"))
text2.DataBindings.Add(New Binding _
("Text", ds, "customers.custID"))
' Bind the DateTimePicker control by adding a new Binding.
' The data member of the DateTimePicker is a
' TableName.RelationName.ColumnName string.
DateTimePicker1.DataBindings.Add(New Binding _
("Value", ds, "customers.CustToOrders.OrderDate"))
' Add event delegates for the Parse and Format events to a
' new Binding object, and add the object to the third
' TextBox control's BindingsCollection. The delegates
' must be added before adding the Binding to the
' collection; otherwise, no formatting occurs until
' the Current object of the BindingManagerBase for
' the data source changes.
Dim b As Binding = New Binding _
("Text", ds, "customers.custToOrders.OrderAmount")
AddHandler b.Parse, New ConvertEventHandler(AddressOf CurrencyStringToDecimal)
AddHandler b.Format, New ConvertEventHandler(AddressOf DecimalToCurrencyString)
text3.DataBindings.Add(b)
' Get the BindingManagerBase for the Customers table.
bmCustomers = Me.BindingContext(ds, "Customers")
' Get the BindingManagerBase for the Orders table using the
' RelationName.
bmOrders = Me.BindingContext(ds, "customers.CustToOrders")
' Bind the fourth TextBox control's Text property to the
' third control's Text property.
text4.DataBindings.Add("Text", text3, "Text")
End Sub
Açıklamalar
Her Windows Formunun, formun BindingManagerBase nesnelerini yöneten en az bir BindingContext nesnesi vardır. BindingManagerBase sınıfı soyut olduğundan, özelliğinin Item[] dönüş türü veya CurrencyManager şeklindedirPropertyManager. Veri kaynağı yalnızca tek bir özellik döndürebilen bir nesneyse (nesne listesi yerine), Type bir PropertyManagerolur. Örneğin, veri kaynağı olarak bir TextBox belirtirseniz, bir PropertyManager döndürülür. Öte yandan, veri kaynağı veya IBindingListuygulayan IList bir nesneyse, bir CurrencyManager döndürülür.
Bir Windows Formundaki her veri kaynağı için tek CurrencyManager bir veya PropertyManagervardır. Bir Windows Formu ile ilişkilendirilmiş birden çok veri kaynağı olabileceğinden, BindingContext veri kaynağıyla ilişkili belirli CurrencyManager herhangi bir veri kaynağını almanıza olanak tanır.
Not
özelliği kullanılırken Item[] , BindingContext henüz yoksa yeni BindingManagerBase bir tane oluşturur. Döndürülen nesne amaçladığınız listeyi (veya herhangi bir listeyi) yönetemeyebileceği için bu durum kafa karışıklığına neden olabilir. Geçersiz BindingManagerBasebir döndürülmesini önlemek için yöntemini kullanarak Contains amaçlananın BindingManagerBase zaten mevcut olup olmadığını belirleyin.
Veriye bağlı denetimler içermek için , veya TabControlgibi bir GroupBoxkapsayıcı denetimi kullanıyorsanız, yalnızca bu kapsayıcı denetimi ve denetimleri için bir BindingContext oluşturabilirsinizPanel. Ardından, formunuzun her bölümü kendi BindingManagerBasetarafından yönetilebilir. BindingContext Aynı veri kaynağı için birden çok BindingManagerBase nesne oluşturma hakkında daha fazla bilgi için oluşturucuya bakın.
Forma denetim TextBox ekleyip bir veri kümesindeki tablonun sütununa bağlarsanız, denetim bu formun ile BindingContext iletişim kurar. sırayla BindingContext, ilgili veri ilişkilendirmesi için belirli CurrencyManager bir ile konuşur. özelliğini CurrencyManagersorguladıysanızPosition
, bu denetimin bağlaması TextBox için geçerli kaydı bildirir. Aşağıdaki kod örneğinde denetimTextBox, veri kümesindeki BindingContextFirstName
dataSet1
bir Customers
tablonun sütununa, üzerinde olduğu formun üzerinden bağlıdır.
TextBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName")
textBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName");
textBox1->DataBindings->Add("Text", dataSet1, "Customers.FirstName");
Forma ikinci TextBox bir denetim (TextBox2
) ekleyebilir ve aynı LastName
veri kümesindeki tablonun sütununa Customers
bağlayabilirsiniz.
BindingContext, ilk bağlamanın (TextBox1
için Customers.FirstName
) farkında olduğundan, her iki metin kutusu da aynı CurrencyManagerveri kümesine (DataSet1
) bağlı olduğundan aynı kullanır.
TextBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName")
textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");
textBox2->DataBindings->Add("Text", dataSet1, "Customers.LastName");
Farklı bir veri kümesine bağlanırsanız TextBox2
, BindingContext ikinci CurrencyManagerbir oluşturur ve yönetir.
ve DisplayMember özelliklerini nasıl ayarladığınız DataSource konusunda tutarlı olmak önemlidir; aksi takdirde, BindingContext aynı veri kümesi için birden çok para birimi yöneticisi oluşturur ve bu da hatalara neden olur. Aşağıdaki kod örneği, özellikleri ve ilişkili BindingContext nesnelerini ayarlamanın birkaç yolunu gösterir. Kodunuzun tamamında tutarlı olduğunuz sürece aşağıdaki yöntemlerden birini kullanarak özellikleri ayarlayabilirsiniz.
ComboBox1.DataSource = DataSet1
ComboBox1.DisplayMember = "Customers.FirstName"
Me.BindingContext(dataSet1, "Customers").Position = 1
comboBox1.DataSource = DataSet1;
comboBox1.DisplayMember = "Customers.FirstName";
this.BindingContext[dataSet1, "Customers"].Position = 1;
comboBox1->DataSource = dataSet1;
comboBox1->DisplayMember = "Customers.FirstName";
this->BindingContext->get_Item(dataSet1, "Customers")->Position = 1;
ComboBox1.DataSource = DataSet1.Customers
ComboBox1.DisplayMember = "FirstName"
Me.BindingContext(dataSet1.Customers).Position = 1
comboBox1.DataSource = DataSet1.Customers;
comboBox1.DisplayMember = "FirstName";
this.BindingContext[dataSet1.Customers].Position = 1;
comboBox1->DataSource = dataSet1->Customers;
comboBox1->DisplayMember = "FirstName";
this->BindingContext->get_Item(dataSet1->Customers)->Position = 1;
Not
Çoğu Windows Forms uygulaması aracılığıyla BindingSourcebağlanır. Bileşen BindingSource a CurrencyManager kapsüller ve programlama arabirimini CurrencyManager kullanıma sunar. bağlaması için kullanırkenBindingSource, üzerinden geçmek BindingContextyerine "para birimini" (başka bir ifadeylePosition
) işlemek için tarafından kullanıma sunulan BindingSource üyeleri kullanmanız gerekir.
Oluşturucular
BindingContext() |
BindingContext sınıfının yeni bir örneğini başlatır. |
Özellikler
IsReadOnly |
Topluluğun salt okunur olup olmadığını gösteren bir değer alır. |
Item[Object, String] |
Belirtilen veri kaynağı ve veri üyesiyle ilişkili bir BindingManagerBase alır. |
Item[Object] |
BindingManagerBase Belirtilen veri kaynağıyla ilişkili olan değerini alır. |
Yöntemler
Add(Object, BindingManagerBase) |
BindingManagerBase Belirli bir veri kaynağıyla ilişkili öğesini koleksiyona ekler. |
AddCore(Object, BindingManagerBase) |
BindingManagerBase Belirli bir veri kaynağıyla ilişkili öğesini koleksiyona ekler. |
Clear() |
Tüm BindingManagerBase nesnelerin koleksiyonunu temizler. |
ClearCore() |
Koleksiyonu temizler. |
Contains(Object) |
öğesinin belirtilen veri kaynağıyla ilişkili öğesini BindingManagerBase içerip içermediğini BindingContext belirten bir değer alır. |
Contains(Object, String) |
öğesinin belirtilen veri kaynağı ve veri üyesiyle ilişkili öğesinin bulunup bulunmadığına BindingContextBindingManagerBase ilişkin bir değer alır. |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
OnCollectionChanged(CollectionChangeEventArgs) |
Olayı tetikler CollectionChanged . |
Remove(Object) |
BindingManagerBase Belirtilen veri kaynağıyla ilişkili öğesini siler. |
RemoveCore(Object) |
BindingManagerBase Belirtilen veri kaynağıyla ilişkili öğesini kaldırır. |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
UpdateBinding(BindingContext, Binding) |
bir Binding öğesini yeni BindingContextbir ile ilişkilendirir. |
Ekinlikler
CollectionChanged |
İşlendiğinde her zaman bir NotImplementedException yükseltir. |
Belirtik Arabirim Kullanımları
ICollection.CopyTo(Array, Int32) |
Koleksiyonun öğelerini, koleksiyon dizininden başlayarak belirtilen bir diziye kopyalar. |
ICollection.Count |
tarafından BindingContextyönetilen nesnelerin toplam sayısını CurrencyManager alır. |
ICollection.IsSynchronized |
Koleksiyonun eşitlenip eşitlenmediğini belirten bir değer alır. |
ICollection.SyncRoot |
Eşitleme için kullanılacak nesneyi alır (iş parçacığı güvenliği). |
IEnumerable.GetEnumerator() |
Koleksiyon için bir numaralandırıcı alır. |
Uzantı Metotları
Cast<TResult>(IEnumerable) |
öğesinin IEnumerable öğelerini belirtilen türe atar. |
OfType<TResult>(IEnumerable) |
Bir öğesinin IEnumerable öğelerini belirtilen türe göre filtreler. |
AsParallel(IEnumerable) |
Sorgunun paralelleştirilmesini sağlar. |
AsQueryable(IEnumerable) |
bir IEnumerable öğesini öğesine IQueryabledönüştürür. |