BindingContext Clase

Definición

Administra la colección de objetos BindingManagerBase para cualquier objeto que herede de la clase Control.

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
Herencia
BindingContext
Implementaciones

Ejemplos

En el ejemplo de código siguiente se crean cuatro Binding objetos para enlazar cinco controles (un DateTimePicker y cuatro TextBox controles) a varios orígenes de datos. BindingContext A continuación, se usa para obtener para BindingManagerBase cada origen de datos.

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

Comentarios

Cada Windows Forms tiene al menos un BindingContext objeto que administra los BindingManagerBase objetos del formulario. Dado que la BindingManagerBase clase es abstracta, el tipo de valor devuelto de la Item[] propiedad es o CurrencyManager .PropertyManager Si el origen de datos es un objeto que solo puede devolver una sola propiedad (en lugar de una lista de objetos), es Type .PropertyManager Por ejemplo, si especifica como TextBox origen de datos, se devuelve .PropertyManager Por otro lado, si el origen de datos es un objeto que implementa IList o IBindingList, se devuelve .CurrencyManager

Para cada origen de datos de un formulario Windows Forms, hay un único CurrencyManager o PropertyManager. Dado que puede haber varios orígenes de datos asociados a un formulario Windows Forms, BindingContext permite recuperar cualquier objeto concreto CurrencyManager asociado a un origen de datos.

Nota

Cuando se usa la Item[] propiedad , crea BindingContext un nuevo BindingManagerBase si aún no existe uno. Esto puede provocar confusión, ya que es posible que el objeto devuelto no administre la lista (o ninguna lista) que quiera. Para evitar devolver un valor no válido BindingManagerBase, use el Contains método para determinar si el objeto previsto BindingManagerBase ya existe.

Si usa un control de contenedor, como , GroupBoxPanelo TabControl, para contener controles enlazados a datos, puede crear un BindingContext para solo ese control de contenedor y sus controles. Después, cada parte del formulario se puede administrar por su propia BindingManagerBase. Consulte el BindingContext constructor para obtener más información sobre cómo crear varios BindingManagerBase objetos para el mismo origen de datos.

Si agrega un TextBox control a un formulario y lo enlaza a una columna de una tabla de un conjunto de datos, el control se comunica con el BindingContext de ese formulario. A BindingContextsu vez, , se comunica con el específico CurrencyManager de esa asociación de datos. Si consulta la Position propiedad de CurrencyManager, notificaría el registro actual para el enlace de ese TextBox control. En el ejemplo de código siguiente, un TextBox control se enlaza a la FirstName columna de una Customers tabla del dataSet1 conjunto de datos a través del para el BindingContext formulario en el que se encuentra.

TextBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName")  
textBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName");  
textBox1->DataBindings->Add("Text", dataSet1, "Customers.FirstName");  

Puede agregar un segundo TextBox control (TextBox2) al formulario y enlazarlo a la LastName columna de la Customers tabla en el mismo conjunto de datos. BindingContext es consciente del primer enlace (TextBox1 a Customers.FirstName), por lo que usaría el mismo CurrencyManager, ya que ambos cuadros de texto están enlazados al mismo conjunto de datos (DataSet1).

TextBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName")  
textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");  
textBox2->DataBindings->Add("Text", dataSet1, "Customers.LastName");  

Si enlaza TextBox2 a un conjunto de datos diferente, BindingContext crea y administra un segundo CurrencyManager.

Es importante ser coherente con la forma de establecer las DataSource propiedades y DisplayMember ; de lo contrario, crea BindingContext varios administradores de moneda para el mismo conjunto de datos, lo que produce errores. En el ejemplo de código siguiente se muestran algunas maneras de establecer las propiedades y sus objetos asociados BindingContext . Puede establecer las propiedades mediante cualquiera de los métodos siguientes, siempre y cuando sea coherente en todo el código.

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;  

Nota

La mayoría de las aplicaciones Windows Forms enlazan a través de .BindingSource El BindingSource componente encapsula y CurrencyManager expone la interfaz de CurrencyManager programación. Al usar para BindingSource el enlace, debe usar los miembros expuestos por BindingSource para manipular "moneda" (es decir, Position) en lugar de pasar por .BindingContext

Constructores

BindingContext()

Inicializa una nueva instancia de la clase BindingContext.

Propiedades

IsReadOnly

Obtiene un valor que indica si la colección es de solo lectura.

Item[Object, String]

Obtiene un objeto BindingManagerBase asociado al origen de datos y miembro de datos especificados.

Item[Object]

Obtiene el objeto BindingManagerBase asociado al origen de datos especificado.

Métodos

Add(Object, BindingManagerBase)

Agrega a la colección el objeto BindingManagerBase asociado a un origen de datos específico.

AddCore(Object, BindingManagerBase)

Agrega a la colección el objeto BindingManagerBase asociado a un origen de datos específico.

Clear()

Borra cualquier objeto BindingManagerBase de la colección.

ClearCore()

Borra la colección.

Contains(Object)

Obtiene un valor que indica si BindingContext contiene el objeto BindingManagerBase asociado al origen de datos especificado.

Contains(Object, String)

Obtiene un valor que indica si BindingContext contiene el objeto BindingManagerBase asociado al origen de datos y miembro de datos especificados.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnCollectionChanged(CollectionChangeEventArgs)

Genera el evento CollectionChanged.

Remove(Object)

Elimina el objeto BindingManagerBase asociado al origen de datos especificado.

RemoveCore(Object)

Quita el objeto BindingManagerBase asociado al origen de datos especificado.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
UpdateBinding(BindingContext, Binding)

Asocia una clase Binding a un nuevo objeto BindingContext.

Eventos

CollectionChanged

Siempre provoca NotImplementedException cuando se controla.

Implementaciones de interfaz explícitas

ICollection.CopyTo(Array, Int32)

Copia los elementos de la colección en la matriz especificada, empezando por el índice de la colección.

ICollection.Count

Obtiene el número total de objetos CurrencyManager de la colección administrados por BindingContext.

ICollection.IsSynchronized

Obtiene un valor que indica si la colección está sincronizada.

ICollection.SyncRoot

Obtiene un objeto que se utiliza para la sincronización (seguridad para la ejecución de subprocesos).

IEnumerable.GetEnumerator()

Obtiene un enumerador para la colección.

Métodos de extensión

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.

Se aplica a

Consulte también