Arquitetura de componente BindingSource

Com o BindingSource componente universalmente, você pode vincular todos os controles de formulários do Windows para fontes de dados.

O BindingSource componente simplifica o processo de ligar controles a uma fonte de dados e fornece as seguintes vantagens sobre vinculação de dados tradicional:

  • Permite a ligação de tempo de design para objetos de negócios.

  • Encapsula CurrencyManager funcionalidade e expõe CurrencyManager eventos em tempo de design.

  • Simplifica a criação de uma lista que ofereça suporte a IBindingList interface fornecendo notificação de alteração de lista de fontes de dados que não suporta de forma nativa notificação de alteração da lista.

  • Fornece um ponto de extensibilidade para o IBindingList.AddNew método.

  • Fornece um nível de indireção entre a fonte de dados e o controle. Essa indireção é importante quando a fonte de dados podem ser alterados em tempo de execução.

  • Interopera com outros controles Windows Forms relacionados a dados, especificamente o BindingNavigator e o DataGridView controles.

Por esses motivos, o BindingSource componente é a melhor maneira de vincular os controles Windows Forms para fontes de dados.

Recursos de BindingSource

O BindingSource componente fornece vários recursos para vincular controles a dados. Com esses recursos, você pode implementar a maioria dos cenários de ligação de dados com quase nenhuma codificação de sua parte.

O BindingSource componente realiza isso fornecendo uma interface consistente para acessar muitos tipos diferentes de fontes de dados. Isso significa que você use o mesmo procedimento para vinculação de qualquer tipo. Por exemplo, você pode anexar o DataSource propriedade para um DataSet ou a um objeto de negócios e em ambos os casos, você usar o mesmo conjunto de propriedades, métodos e eventos para manipular os dados de origem.

A interface consistente fornecida pelo BindingSource componente simplifica bastante o processo de vinculação de dados para controles. Alteração de tipos de fonte de dados que fornecem notificação, o BindingSource componente automaticamente se comunica as alterações entre o controle e a fonte de dados. Para tipos de fonte de dados que não fornecem notificação de alteração, os eventos são fornecidas que permitem que você elevar as notificações de alteração. A lista a seguir mostra os recursos suportados pelo BindingSource componente:

Indireção

O BindingSource componente fornece um nível de indireção entre um controle e uma fonte de dados. Em vez de vincular um controle diretamente a uma fonte de dados, você pode vincular o controle um BindingSource, e anexar a fonte de dados para o BindingSource do componente DataSource propriedade.

Com esse nível de indireção, você pode alterar a fonte de dados sem redefinir a ligação de controle. Isso proporciona os seguintes recursos:

Gerenciamento de moeda

O BindingSource componente implementa o ICurrencyManagerProvider interface para lidar com gerenciamento de moeda para você. Com o ICurrencyManagerProvider interface, você também pode acessar o gerente de moeda para um BindingSource, com o Gerenciador de moeda para outra BindingSource vinculado ao mesmo DataMember.

O BindingSource encapsula o componente CurrencyManager expõe mais comuns e funcionalidade CurrencyManager Propriedades e eventos. A tabela a seguir descreve alguns dos membros relacionados ao gerenciamento de moeda.

  • Propriedade CurrencyManager
    Obtém o gerente de moeda associado a BindingSource.

  • Método GetRelatedCurrencyManager
    Se não houver outro BindingSource ligado ao membro de dados especificado, obtém seu Gerenciador de moeda.

  • Propriedade Current
    Obtém o item atual da fonte de dados.

  • Propriedade Position
    Obtém ou define a posição atual na lista subjacente.

  • Método EndEdit
    Aplica as alterações pendentes para a fonte de dados subjacente.

  • Método CancelEdit
    Cancela a operação de edição atual.

Fonte de dados como uma lista

O BindingSource componente implementa o IBindingListView e ITypedList interfaces. Com essa implementação, você pode usar o BindingSource o componente a próprio como uma fonte de dados, sem qualquer armazenamento externo.

Quando o BindingSource componente é anexado a uma fonte de dados, ele expõe a fonte de dados como uma lista.

O DataSource propriedade pode ser definida para várias fontes de dados. Eles incluem listas de tipos, objetos e tipos. A fonte de dados resultante será exposta como uma lista. A tabela a seguir mostra algumas das fontes de dados comuns e a avaliação de lista resultante.

Propriedade DataSource

Lista de resultados

Uma referência nula (Nothing em Visual Basic)

Um vazio IBindingList de objetos. Adicionar um item define a lista para o tipo do item adicionado.

Uma referência nula (Nothing em Visual Basic) com DataMember definido

Não é suportado; gera ArgumentException.

Tipo de lista não ou objeto do tipo "T"

Um vazio IBindingList do tipo "T".

Ocorrência de array

Um IBindingList que contém os elementos de matriz.

IEnumerableinstância

Um IBindingList que contém o IEnumerable itens

Lista contendo o tipo de instância "T"

Um IBindingList instância que contém o tipo "T".

Além disso, DataSource pode ser definida como a outros tipos de lista, IListSource e ITypedListe o BindingSource irá tratá-las adequadamente. Nesse caso, o tipo que está contido na lista deve ter um construtor padrão.

BindingSource como IBindingList

O BindingSource componente fornece membros para acessar e manipular os dados subjacentes, como um IBindingList. A tabela a seguir descreve alguns desses membros.

Membro

Descrição

Propriedade List

Obtém a lista de resultados de avaliação da DataSource ou DataMember Propriedades.

Método AddNew

Adiciona um novo item à lista subjacente. Aplica a fontes de dados que implementam o IBindingList interface e permitir a adição de itens (ou seja, o AllowNew for definida como true).

Criação personalizada de Item

Você pode manipular o AddingNew o evento para fornecer sua própria lógica de criação do item. O AddingNew evento ocorre antes de um novo objeto é adicionado para o BindingSource. Este evento é gerado após a AddNew método é chamado, mas antes do novo item é adicionado à lista subjacente. Por tratamento desse evento, você pode fornecer o comportamento de criação do item personalizado sem derivar o BindingSource classe. Para obter mais informações, consulte Como: Personalizar a adição de Item com o BindingSource do Windows Forms.

Criação do Item transacional

O BindingSource componente implementa o ICancelAddNew interface, que permite a criação do item transacional. Depois de um novo item provisoriamente é criado usando uma chamada para AddNew, a inclusão pode ser confirmada ou revertida das seguintes maneiras:

  • O EndNew método explicitamente comprometerá a adição pendente.

  • Executando outra operação de coleção, como, por exemplo, uma inserção, remoção ou mover, implicitamente comprometerá a adição pendente.

  • O CancelNew método irá reverter a adição pendente se o método ainda não tenha sido confirmado.

Suporte de IEnumerable

O BindingSource componente permite que os controles de ligação IEnumerable fontes de dados. Com este componente, você pode vincular a uma fonte de dados, como um System.Data.SqlClient.SqlDataReader.

Quando um IEnumerable atribuído a fonte de dados a BindingSource componente, o BindingSource cria um IBindingList e adiciona o conteúdo da IEnumerable a fonte de dados à lista.

Suporte em tempo de design

Alguns tipos de objeto não podem ser criados em tempo de design, como, por exemplo, objetos criados a partir de uma classe de fábrica ou objetos retornados por um serviço da Web. Às vezes convém vincular os controles para esses tipos em tempo de design, mesmo se não houver nenhum objeto na memória para os quais os controles podem vincular. Por exemplo, convém rotular os cabeçalhos de coluna de uma DataGridView o controle com os nomes de propriedades públicas. seu tipo personalizado

Para oferecer suporte a esse cenário, o BindingSource componente suporta ligação a um Type. Ao atribuir um Type para o DataSource propriedade, o BindingSource componente cria um vazio BindingList<T> de Type itens. Quaisquer controles que você se vincular subseqüentemente a BindingSource componente será alertado sobre a presença de propriedades ou no esquema do seu tipo em tempo de design, ou em tempo de execução. Para obter mais informações, consulte Como: Ligar um controle Windows Forms a um tipo.

Métodos estáticos de ListBindingHelper

O System.Windows.Forms.BindingContext, System.Windows.Forms.CurrencyManager, e BindingSource toda a lógica comum compartilhamento para gerar uma lista de tipos de um DataSource/DataMember par. Além disso, essa lógica comum é publicamente exposta para uso por autores de controle e outros terceiros nas seguintes static métodos:

Classificação e filtragem com a Interface IBindingListView

O BindingSource componente implementa o IBindingListView interface, que estende o IBindingList interface. O IBindingList oferece a única coluna de classificação e o IBindingListView oferece avançados de classificação e filtragem. Com IBindingListView, você pode classificar e filtrar itens na fonte de dados, se a fonte de dados também implementa uma dessas interfaces. O BindingSource component não fornece uma implementação de referência dessas membros. Em vez disso, as chamadas são encaminhadas para a lista subjacente.

A tabela a seguir descreve as propriedades que você pode usar para classificação e filtragem.

Membro

Descrição

Propriedade Filter

Se a fonte de dados é um IBindingListView, obtém ou define a expressão usada para filtrar quais linhas são exibidas.

Propriedade Sort

Se a fonte de dados é um IBindingList, obtém ou define um nome de coluna usado para classificar e informações de ordem de classificação.

- ou -

Se a fonte de dados é um IBindingListView e suporte avançados da classificação, obtém vários nomes de coluna usados para classificação e a ordem de classificação

Integração com o BindingNavigator

Você pode usar o BindingSource o componente para vincular a qualquer controle Windows Forms a uma fonte de dados, mas o BindingNavigator controle foi projetado especificamente para trabalhar com o BindingSource componente. O BindingNavigator controle fornece uma interface de usuário para controlar o BindingSource atual do item. do componente Por padrão, o BindingNavigator controle fornece botões que correspondem aos métodos de navegação na BindingSource componente. Para obter mais informações, consulte Como: Navegar em Dados com o Controle BindingNavigator do Windows Forms.

Consulte também

Tarefas

Como: Ligar um controle Windows Forms a um tipo

Como: Refletir atualizações de fonte de dados em um controle Windows Forms com o BindingSource

Referência

Visão geral sobre o componente BindingSource

BindingSource

BindingNavigator

Outros recursos

BindingNavigator Control (Windows Forms)

Ligação de dados de formulários do Windows

Controles para uso no Windows Forms