Associar controles do WPF a um WCF Data Service
Neste passo a passo, você criará um aplicativo WPF que contém controles de associação de dados. Os controles estão associados a registros de clientes que são encapsulados em um WCF Data Service. Você também adicionará botões que os clientes podem usar para exibir e atualizar registros.
Este passo a passo ilustra as seguintes tarefas:
Criando um Modelo de Dados de Entidade que é gerado a partir de dados no banco de dados de exemplo AdventureWorksLT.
Criando um que expõe os dados no Modelo de Dados de Entidade para um aplicativo WPF.
Criando um conjunto de controles de associação de dados ao arrastar itens da janela Fontes de Dados para o WPF Designer.
Criando botões que navegam para a frente e para trás nos registros de clientes.
Criando um botão que salva as alterações dos dados nos controles para o e a fonte de dados subjacente.
Observação
Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio neste artigo. Você pode estar usando outra edição do Visual Studio ou outras configurações de ambiente. Para obter mais informações, confira Personalizar o IDE.
Pré-requisitos
Você precisará dos seguintes componentes para concluir este passo a passo:
Visual Studio
Acesso a uma instância em execução do SQL Server ou SQL Server Express que tenha o banco de dados de exemplo AdventureWorksLT anexado a ele. Para baixar o banco de dados, consulte os bancos de dados de exemplo do AdventureWorks
Conhecimento prévio dos conceitos a seguir também é útil, mas não é necessário para concluir o passo a passo:
Modelos de dados no WCF Data Services.
Modelos de Dados de Entidade e o ADO.NET Entity Framework. Para mais informações, confira Visão geral do Entity Framework.
Associação de dados do WPF. Para obter mais informações, confira Visão geral de associação de dados.
Criar o projeto de serviço
Inicie este passo a passo criando um projeto C# ou Visual Basic ASP.NET Aplicativo Web. Nomeie o projeto AdventureWorksService.
No Gerenciador de Soluções, clique com o botão direito do mouse em Default.aspx e selecione Excluir. Esse arquivo não é necessário para o passo a passo.
Crie um Modelo de Dados de Entidade para o serviço
Para expor os dados para um aplicativo usando um Serviço de Dados WCF, você deve definir um modelo de dados para o serviço. O Serviço de Dados WFCF, dois tipos de modelos de dados: Modelos de Dados de Entidade e modelos de dados personalizados definidos usando objetos CRL (Common Language Runtime) que implementam a IQueryable<T> interface. Neste passo a passo, você criará um Modelo de Dados de Entidade para o modelo de dados.
No menu Projeto , clique em Adicionar Novo Item.
Na lista Modelos Instalados, clique em Dados e selecione o item do projeto Modelo de Dados de Entidade ADO.NET.
Altere o nome para
AdventureWorksModel.edmx
e clique em Adicionar.O Assistente do Modelo de Dados de Entidade será aberto.
Na página Escolher Conteúdo do Modelo, clique em Gerar do banco de dados e em Avançar.
Na página Escolha a Conexão de Dados, selecione uma das seguintes opções:
Se uma conexão de dados com o banco de dados de exemplo AdventureWorksLT estiver disponível na lista suspensa, selecione-a.
Clique em Nova Conexão e crie uma conexão com o banco de dados AdventureWorksLT.
Na página Escolha a Conexão de Dados, verifique se a opção Salvar configurações de conexão de entidade em App.Config como está selecionada e selecione Avançar.
Na página Escolher Objetos do Banco de Dados, expanda Tabelas e selecione a tabela SalesOrderHeader.
Clique em Concluir.
Criar o serviço
Crie um Serviço de Dados do WCF para expor os dados no Modelo de Dados de Entidade a um aplicativo WPF:
No menu Projeto, selecione Adicionar novo item.
Na lista Modelos Instalados, clique em Web e selecione o item de projeto Serviço de Dados WCF.
Na caixa Nome, digite
AdventureWorksService.svc
e clique em OK.O Visual Studio adiciona
AdventureWorksService.svc
ao projeto.
Configurar o serviço
Você deve configurar o serviço para operar no Modelo de Dados de Entidade que você criou:
No arquivo de
AdventureWorks.svc
códigos, substitua o AdventureWorksService declaração se sala com os seguintes códigos.public class AdventureWorksService : DataService<AdventureWorksLTEntities> { // This method is called only once to initialize service-wide policies. public static void InitializeService(IDataServiceConfiguration config) { config.SetEntitySetAccessRule("SalesOrderHeaders", EntitySetRights.All); } }
Este código atualiza a classe AdventureWorksService, de modo que ela deriva de umDataService<T> que opera
AdventureWorksLTEntities
na classe de contexto do objeto em seu Modelo de Dados de Entidade. Ele também atualiza o métodoInitializeService
para permitir aos clientes do serviço acesso completo de leitura/gravação à entidadeSalesOrderHeader
.Crie o projeto e verifique se ele foi criado sem erros.
Para criar o aplicativo cliente WPF
Para exibir os dados do WCF Data Service, crie um novo aplicativo WPF com uma fonte de dados que se baseie no serviço. A seguir neste passo a passo, você adicionará controles de associação de dados ao aplicativo.
No Gerenciador de Soluções, clique com o botão direito do mouse no nó da solução, clique em Adicionar e selecione Novo Projeto.
Na caixa de diálogo Novo Projeto, expanda Visual Basic ou Visual C# e selecione Windows.
Selecione o modelo de projeto Aplicativo WPF.
Na caixa Nome, digite
AdventureWorksSalesEditor
e clique em OK.O Visual Studio adiciona o
AdventureWorksSalesEditor
projeto à solução.No menu Dados, clique em Mostrar Fontes de Dados.
A janela Fontes de Dados é aberta.
Na janela Fontes de Dados, clique em Adicionar Nova Fonte de Dados.
O Assistente de Configuração de Fonte de Dados é aberto.
Na página Escolher um Tipo de Fonte de Dados do assistente, selecione Serviço e selecione Avançar.
Na caixa de diálogo Adicionar Referência de Serviço, clique em Descobrir.
O Visual Studio pesquisa a solução atual para os serviços disponíveis e acrescenta
AdventureWorksService.svc
AdventureWorksService.svc à lista de serviços disponíveis na caixa Serviços.Na caixa Namespace, digite AdventureWorksService.
Na caixa Serviços, clique em AdventureWorksService.svc e selecione OK.
O Visual Studio baixa as informações de serviço e retorna ao Assistente de Configuração de Fonte de Dados.
Na página Adicionar Referência de Serviço, clique em Concluir.
O Visual Studio adiciona nós que representam os dados retornados pelo serviço à janela Fontes de Dados.
Definir a interface do usuário
Adicione vários botões à janela, modificando o XAML no WPF Designer. A seguir neste passo a passo, você adicionará código que permite aos usuários exibir e atualizar registros de vendas usando esses botões.
No Gerenciador de Soluções, clique duas vezes em MainWindow.xaml.
A janela é aberta no WPF Designer.
Na exibição XAML do designer, adicione o seguinte código entre as marcas
<Grid>
:<Grid.RowDefinitions> <RowDefinition Height="75" /> <RowDefinition Height="525" /> </Grid.RowDefinitions> <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75"><</Button> <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75">></Button> <Button HorizontalAlignment="Right" Margin="0,21,46,24" Name="saveButton" Width="110">Save changes</Button>
Compile o projeto.
Criar os controles associados a dados
Crie controles que exibem registros do cliente ao arrastar o SalesOrderHeaders
nó SalesOrderHeaders da janela Fontes de Dados para o designer.
Na janela Fontes de Dados, clique no menu da lista suspensa para o nó SalesOrderHeaders e selecione Detalhes.
Expanda o nó SalesOrderHeaders.
Neste exemplo, alguns campos não serão exibidos, portanto, clique no menu da lista suspensa ao lado dos seguintes nós e selecione Nenhum:
CreditCardApprovalCode
ModifiedDate
OnlineOrderFlag
RevisionNumber
rowguid
Essa ação impede que o Visual Studio crie controles de associação de dados para esses nós na etapa seguinte. Para este passo a passo, pressupõe-se que o usuário final não precise ver esses dados.
Na janela Fontes de Dados, arraste o nó SalesOrderHeaders para a linha de grade sob a linha que contém os botões.
O Visual Studio gera XAML e código que criam um conjunto de controles associados a dados na tabela Produto. Para mais informações sobre o XAML e o código gerados, consulte Associar controles WPF a dados no Visual Studio.
No designer, clique na caixa de texto ao lado do rótulo de ID do Cliente.
Na janela Propriedades, marque a caixa de seleção ao lado da propriedade IsReadOnly.
Configure a propriedade IsReadOnly para cada uma das seguintes caixas de texto:
Número da Ordem de Compra
ID da Ordem de Venda
Sales Order Number
Carregar os dados do serviço
Use o objeto proxy de serviço para carregar dados de vendas do serviço. Em seguida, atribua os dados retornados à fonte de dados para a CollectionViewSource janela do WPF.
No designer, para criar o
Window_Loaded
manipulador de eventos, clique duas vezes no texto que diz: MainWindow.Substitua o manipulador de eventos pelo código a seguir. Substitua o endereço
localhost
neste código pelo endereço de host local no computador de desenvolvimento.private AdventureWorksService.AdventureWorksLTEntities dataServiceClient; private System.Data.Services.Client.DataServiceQuery<AdventureWorksService.SalesOrderHeader> salesQuery; private CollectionViewSource ordersViewSource; private void Window_Loaded(object sender, RoutedEventArgs e) { // TODO: Modify the port number in the following URI as required. dataServiceClient = new AdventureWorksService.AdventureWorksLTEntities( new Uri("http://localhost:45899/AdventureWorksService.svc")); salesQuery = dataServiceClient.SalesOrderHeaders; ordersViewSource = ((CollectionViewSource)(this.FindResource("salesOrderHeadersViewSource"))); ordersViewSource.Source = salesQuery.Execute(); ordersViewSource.View.MoveCurrentToFirst(); }
Navegar pelos registros de vendas
Adicione o código que permite aos usuários rolem nos registros de vendas, usando os botões < e >.
No designer, clique duas vezes no botão < na superfície da janela.
O Visual Studio abre o arquivo code-behind e cria um novo manipulador de eventos
backButton_Click
para o evento Click.Adicione o seguinte código ao manipulador de eventos
backButton_Click
gerado:Retorne ao designer e clique duas vezes no botão >.
O Visual Studio abre o arquivo code-behind e cria um novo manipulador de eventos
nextButton_Click
para o evento Click.Adicione o seguinte código ao manipulador de eventos
nextButton_Click
gerado:
Salvar alterações nos registros de vendas
Adicione o código que permite aos usuários exibir e salvar as alterações em registros de vendas ao usar o botão Salvar alterações:
No designer, clique duas vezes no botão Salvar Alterações.
O Visual Studio abre o arquivo code-behind e cria um novo manipulador de eventos
saveButton_Click
para o evento Click.Adicione o seguinte código ao manipulador de eventos do
saveButton_Click
.
Testar o aplicativo
Compile e execute o aplicativo para verificar se é possível exibir e atualizar os registros do cliente:
No menu Compilar, clique em Compilar Solução. Verifique se a solução é compilada sem erros.
Pressione Ctrl++F5.
O Visual Studio inicia o projeto AdventureWorksService sem depurá-lo.
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto AdventureWorksSalesEditor.
No menu de clique com o botão direito do mouse (menu de contexto), em Depurar, clique em Iniciar nova instância.
O aplicativo é executado. Verifique o seguinte:
As caixas de texto exibem diferentes campos de dados desde o primeiro registro de venda, que tem a ID de ordem de venda 71774.
Você pode clicar nos botões > ou < para navegar em outros registros de vendas.
Em um dos registros de vendas, digite algum texto na caixa Comentário e selecione Salvar alterações.
Feche o aplicativo e depois inicie-o novamente no Visual Studio.
Navegue até o registro de vendas que você alterou e verifique se a alteração persiste depois de fechar e reabrir o aplicativo.
Feche o aplicativo.
Próximas etapas
Depois de completar este passo a passo, você poderá realizar as seguintes tarefas relacionadas:
Saiba como usar a janela Fontes de Dados no Visual Studio para associar controles do WPF a outros tipos de fontes de dados. Para obter mais informações, consulte Associar controles WPF a um conjunto dedados.
Saiba como usar a janela Fontes de Dados no Visual Studio para exibir dados relacionados (isto é, dados em uma relação pai-filho) em controles do WPF. Para obter mais informações, consulte Passo a passo: exibindo dados relacionados em um aplicativoWPF.