BindingContext Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Gere a coleção de BindingManagerBase objetos para qualquer objeto que herde da Control classe.
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
- Herança
-
BindingContext
- Implementações
Exemplos
O exemplo de código seguinte cria quatro Binding objetos para associar cinco controlos - a DateTimePicker e quatro TextBox controlos - a várias fontes de dados. O BindingContext é então usado para obter o BindingManagerBase para cada fonte de dados.
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
Observações
Cada Formulário Windows tem pelo menos um objeto BindingContext que gere os objetos BindingManagerBase para a forma. Como a BindingManagerBase classe é abstrata, o tipo de retorno da Item[] propriedade é ou a CurrencyManager ou a PropertyManager. Se a fonte de dados for um objeto que pode devolver apenas uma única propriedade (em vez de uma lista de objetos), o Type é um PropertyManager. Por exemplo, se especificar a TextBox como fonte de dados, a PropertyManager é devolvido. Por outro lado, se a fonte de dados for um objeto que implementa IList ou IBindingList, a CurrencyManager é devolvido.
Para cada fonte de dados num formulário Windows, existe um único CurrencyManager ou PropertyManager. Como podem existir múltiplas fontes de dados associadas a um Formulário Windows, o BindingContext permite-lhe recuperar qualquer CurrencyManager específico associado a uma fonte de dados.
Note
Ao usar a Item[] propriedade, cria BindingContext uma nova BindingManagerBase , caso ainda não exista. Isto pode causar alguma confusão, pois o objeto devolvido pode não gerir a lista (ou qualquer lista) que pretendes. Para evitar devolver um inválido BindingManagerBase, use o Contains método para determinar se o pretendido BindingManagerBase já existe.
Se usar um controlo de contentor, como um GroupBox, Panel, ou TabControl, para conter controlos ligados a dados, pode criar um BindingContext apenas para esse controlo de contentor e os seus controlos. Assim, cada parte da sua forma pode ser gerida pelo seu próprio BindingManagerBase. Consulte o BindingContext construtor para mais informações sobre como criar múltiplos BindingManagerBase objetos para a mesma fonte de dados.
Se adicionares um TextBox controlo a um formulário e o ligares a uma coluna de uma tabela num conjunto de dados, o controlo comunica com o BindingContext desse formulário. O BindingContext, por sua vez, fala com o específico CurrencyManager dessa associação de dados. Se consultares a Position propriedade do CurrencyManager, ele reportaria o registo atual para a ligação desse TextBox controlo. No exemplo de código seguinte, um TextBox controlo está ligado à FirstName coluna de uma Customers tabela no dataSet1 conjunto de dados através do BindingContext para a forma em que se encontra.
TextBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName")
textBox1.DataBindings.Add("Text", dataSet1, "Customers.FirstName");
Pode adicionar um segundo TextBox controlo (TextBox2) ao formulário e associá-lo à LastName coluna da Customers tabela no mesmo conjunto de dados. O BindingContext está ciente da primeira ligação (TextBox1 a Customers.FirstName), pelo que usaria a mesma CurrencyManager, pois ambas as caixas de texto estão ligadas ao mesmo conjunto de dados (DataSet1).
TextBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName")
textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");
Se ligares TextBox2 a um conjunto de dados diferente, o BindingContext cria e gere um segundo CurrencyManager.
É importante ser consistente na forma como define as DataSource propriedades e; DisplayMember caso contrário, cria BindingContext múltiplos gestores de moeda para o mesmo conjunto de dados, o que resulta em erros. O exemplo de código seguinte mostra algumas formas de definir as propriedades e os seus objetos associados BindingContext . Pode definir as propriedades usando qualquer um dos métodos seguintes, desde que seja consistente em todo o seu 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.Customers
ComboBox1.DisplayMember = "FirstName"
Me.BindingContext(dataSet1.Customers).Position = 1
comboBox1.DataSource = DataSet1.Customers;
comboBox1.DisplayMember = "FirstName";
this.BindingContext[dataSet1.Customers].Position = 1;
Note
A maioria das aplicações Windows Forms vincula através de um BindingSource. O BindingSource componente encapsula a CurrencyManager e expõe a CurrencyManager interface de programação. Ao usar um BindingSource para vinculação, deve usar os membros expostos por o BindingSource para manipular a "moeda" (isto é, Position) em vez de passar pelo BindingContext.
Construtores
| Name | Description |
|---|---|
| BindingContext() |
Inicializa uma nova instância da BindingContext classe. |
Propriedades
| Name | Description |
|---|---|
| IsReadOnly |
Recebe um valor que indica se a coleção é apenas de leitura. |
| Item[Object, String] |
Obtém um BindingManagerBase que está associado à fonte de dados e ao membro de dados especificados. |
| Item[Object] |
Obtém o BindingManagerBase que está associado à fonte de dados especificada. |
Métodos
| Name | Description |
|---|---|
| Add(Object, BindingManagerBase) |
Adiciona a BindingManagerBase fonte de dados associada a uma fonte de dados específica à coleção. |
| AddCore(Object, BindingManagerBase) |
Adiciona a BindingManagerBase fonte de dados associada a uma fonte de dados específica à coleção. |
| Clear() |
Limpa a coleção de quaisquer BindingManagerBase objetos. |
| ClearCore() |
Limpa a coleção. |
| Contains(Object, String) |
Obtém um valor que indica se o BindingContext contém o BindingManagerBase associado à fonte de dados e ao membro de dados especificados. |
| Contains(Object) |
Obtém um valor que indica se o BindingContext contém o BindingManagerBase associado à fonte de dados especificada. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| OnCollectionChanged(CollectionChangeEventArgs) |
Eleva o CollectionChanged evento. |
| Remove(Object) |
Elimina a BindingManagerBase fonte de dados associada à especificada. |
| RemoveCore(Object) |
Remove o BindingManagerBase valor associado à fonte de dados especificada. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| UpdateBinding(BindingContext, Binding) |
Associa um Binding a um novo BindingContext. |
evento
| Name | Description |
|---|---|
| CollectionChanged |
Sempre levanta a NotImplementedException quando é manuseado. |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Copia os elementos da coleção para um array especificado, começando no índice da coleção. |
| ICollection.Count |
Obtém o número total de CurrencyManager objetos geridos pelo BindingContext. |
| ICollection.IsSynchronized |
Recebe um valor que indica se a coleção está sincronizada. |
| ICollection.SyncRoot |
Obtém um objeto para usar na sincronização (segurança de thread). |
| IEnumerable.GetEnumerator() |
Recebe um enumerador para a coleção. |
Métodos da Extensão
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Permite a paralelização de uma consulta. |
| AsQueryable(IEnumerable) |
Converte um IEnumerable para um IQueryable. |
| Cast<TResult>(IEnumerable) |
Conjura os elementos de an IEnumerable para o tipo especificado. |
| OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base num tipo especificado. |