Vincular controles do WPF a dados em aplicativos do .NET Framework

Observação

Os conjuntos de dados e as classes relacionadas são tecnologias herdadas do .NET Framework do início dos anos 2000 que permitem que os aplicativos trabalhem com dados na memória enquanto os aplicativos estão desconectados do banco de dados. Eles são bastante úteis em aplicativos que permitem que os usuários modifiquem dados e persistam as alterações no banco de dados. Embora os conjuntos de dados tenham se mostrado uma tecnologia muito bem-sucedida, é recomendado que os novos aplicativos .NET usem o Entity Framework Core. O Entity Framework proporciona uma forma mais natural de trabalhar com dados tabulares como modelos de objeto e conta com uma interface de programação mais simples.

É possível exibir dados para usuários do aplicativo com a associação de dados a controles. Para criar esses controles de associação de dados, é possível arrastar itens da janela Fontes de Dados para o Designer do WPF no Visual Studio. Este tópico descreve algumas das tarefas, ferramentas e classes mais comuns que é possível usar para criar aplicativos WPF de associação de dados.

Para obter informações gerais sobre como criar controles associados a dados no Visual Studio, confira Associar controles a dados no Visual Studio. Para obter mais informações sobre vinculação de dados do WPF, confira Visão geral de vinculação de dados.

Tarefas envolvidas na associação de controles WPF a dados

A tabela a seguir lista as tarefas que podem ser realizadas arrastando-se itens da janela Fontes de Dados para o Designer do WPF.

Tarefa Mais informações
Crie novos controles de associação de dados.

Associe controles existentes a dados.
Associar controles do WPF a um conjunto de dados
Crie controles que exibam dados relacionados em uma relação pai-filho: quando o usuário seleciona um registro de dados pai em um controle, outro controle exibe dados filho relacionados ao registro selecionado. Exibir dados relacionados em aplicativos WPF
Crie uma tabela de pesquisa que exiba informações de uma tabela com base no valor de um campo de chave estrangeira em outra tabela. Criar tabelas de pesquisa em aplicativos do WPF
Associe um controle a uma imagem em um banco de dados. Associar controles a imagens de um banco de dados

Reproduções automáticas válidas

É possível arrastar itens na janela Fontes de Dados apenas para reproduções automáticas válidas no Designer do WPF. Existem dois tipos principais de destinos depósitos válidos: contêineres e controles. Um contêiner é um elemento de interface do usuário que normalmente contém controles. Por exemplo, uma grade é um contêiner, assim como uma janela.

XAML e código gerados

Quando você arrasta um item da janela Fontes de Dados para o Designer do WPF, o Visual Studio gera XAML que define um novo controle de associação de dados (ou associa um controle existente à fonte de dados). Para algumas fontes de dados, o Visual Studio também gera código no arquivo code-behind que preenche a fonte de dados com dados.

A tabela a seguir lista o XAML e o código que o Visual Studio gera para cada tipo de fonte de dados na janela Fontes de Dados.

Fonte de dados Gerar XAML que associa um controle à fonte de dados Gerar código que preenche a fonte de dados com dados
Dataset Sim Sim
Modelo de Dados de Entidade Sim Sim
Serviço Sim Não
Objeto Sim Não

Conjunto de dados

Quando você arrasta uma tabela ou uma coluna da janela Fontes de Dados para o designer, o Visual Studio gera XAML que faz o seguinte:

  • Adiciona o conjunto de dados e um novo CollectionViewSource aos recursos do contêiner arrastados para o item. O CollectionViewSource é um objeto que pode ser usado para navegar e exibir os dados no conjunto de dados.

  • Cria uma associação de dados para um controle. Se você arrastar o item para um controle existente no designer, o XAML associará o controle ao item. Se você arrastar o item para um contêiner, o XAML criará o controle que foi selecionado para o item arrastado e associará o controle ao item. O controle é criado dentro de um novo Grid.

O Visual Studio também faz as seguintes alterações no arquivo code-behind:

  • Cria um manipulador de eventos Loaded para o elemento de interface do usuário que contém o controle. O manipulador de eventos preenche a tabela com dados, recupera o CollectionViewSource dos recursos do contêiner e, em seguida, torna o primeiro item dados o item atual. Se já houver um manipulador de eventos Loaded, o Visual Studio adicionará esse código ao manipulador de eventos existente.

Modelos de dados de entidade

Quando você arrasta uma entidade ou uma propriedade de entidade da janela Fontes de Dados para o designer, o Visual Studio gera XAML que faz o seguinte:

  • Adiciona um novo CollectionViewSource aos recursos do contêiner arrastados para o item. O CollectionViewSource é um objeto que pode ser usado para navegar e exibir os dados na entidade.

  • Cria uma associação de dados para um controle. Se você arrastar o item para um controle existente no designer, o XAML associará o controle ao item. Se você arrastar o item para um contêiner, o XAML criará o controle que foi selecionado para o item arrastado e associará o controle ao item. O controle é criado dentro de um novo Grid.

O Visual Studio também faz as seguintes alterações no arquivo code-behind:

  • Adiciona um novo método que retorna uma consulta para a entidade arrastada para o designer (ou a entidade que contém a propriedade que você arrastou para o designer). O novo método tem o nome Get<EntityName>Query, em que \<EntityName> é o nome da entidade.

  • Cria um manipulador de eventos Loaded para o elemento de interface do usuário que contém o controle. O manipulador de eventos chama o método Get<EntityName>Query para preencher a entidade com dados, recupera o CollectionViewSource dos recursos do contêiner e, em seguida, torna o primeiro item dados o item atual. Se já houver um manipulador de eventos Loaded, o Visual Studio adicionará esse código ao manipulador de eventos existente.

Serviços

Quando você arrasta um objeto ou uma propriedade de serviço da janela Fontes de Dados para o designer, o Visual Studio gera XAML que cria um controle de associação de dados (ou associa um controle existente ao objeto ou à propriedade). No entanto, o Visual Studio não gera o código que preenche o objeto de serviço do proxy com dados. Você deve gravar esse código sozinho. Para obter um exemplo que demonstra como fazer isso, confira Associar controles WPF a um serviço de dados WCF.

O Visual Studio gera XAML, que faz o seguinte:

  • Adiciona um novo CollectionViewSource aos recursos do contêiner arrastados para o item. O CollectionViewSource é um objeto que pode ser usado para navegar e exibir os dados no objeto retornado pelo serviço.

  • Cria uma associação de dados para um controle. Se você arrastar o item para um controle existente no designer, o XAML associará o controle ao item. Se você arrastar o item para um contêiner, o XAML criará o controle que foi selecionado para o item arrastado e associará o controle ao item. O controle é criado dentro de um novo Grid.

Objetos

Quando você arrasta um objeto ou uma propriedade da janela Fontes de Dados para o designer, o Visual Studio gera XAML que cria um controle de associação de dados (ou associa um controle existente ao objeto ou à propriedade). No entanto, o Visual Studio não gera código para preencher o objeto com dados. Você deve gravar esse código sozinho.

Observação

As classes personalizadas precisam ser públicas e, por padrão, ter um construtor sem parâmetros. Elas não podem ser classes aninhadas com um "ponto" na sintaxe. Para obter mais informações, confira XAML e classes personalizadas para WPF.

O Visual Studio gera XAML, que faz o seguinte:

  • Adiciona um novo CollectionViewSource aos recursos do contêiner arrastados para o item. O CollectionViewSource é um objeto que pode ser usado para navegar e exibir os dados no objeto.

  • Cria uma associação de dados para um controle. Se você arrastar o item para um controle existente no designer, o XAML associará o controle ao item. Se você arrastar o item para um contêiner, o XAML criará o controle que foi selecionado para o item arrastado e associará o controle ao item. O controle é criado dentro de um novo Grid.

Confira também