Passo a passo: Vinculação de controles WPF para um serviço de dados do WCF

Em essa explicação passo a passo, você criará um aplicativo WPF que contém controles associados a dados.Os controles são associados aos registros de clientes que são encapsulados em WCF Data Services.Você também irá adicionar botões que os clientes podem usar para exibir e atualizar registros.

Essa explicação passo a passo mostra as seguintes tarefas:

  • Criando um modelo de dados de entidade que é gerado de dados no banco de dados de exemplo AdventureWorksLT.

  • Criando WCF Data Services que expõe os dados no modelo de dados de entidade a um aplicativo WPF.

  • Criando um conjunto de controles associados a dados arrastando itens da janela de Fontes de Dados o WPF designer.

  • Criando os botões que navegam registros de módulos dianteiros e inverso de cliente.

  • Criando um botão que salva alterações aos dados nos controles a WCF Data Services e para a fonte de dados subjacente.

    ObservaçãoObservação

    Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações de Visual Studio.

Pré-requisitos

Para completar este passo-a-passo, são necessários os seguintes componentes:

  • Visual Studio

  • Acesso a uma instância do SQL Server em execução ou SQL Server Express que tenha o banco de dados de exemplo AdventureWorksLT anexou-lhe.Você pode baixar o banco de dados AdventureWorksLT de site de CodePlex.

O conhecimento prévio dos seguintes conceitos também é útil, mas não necessário para concluir a explicação passo a passo:

Criando o projeto de serviço

Iniciar este explicação passo a passo criar um projeto para WCF Data Services.

Para criar o projeto de serviço

  1. Inicie o Visual Studio.

  2. No menu File, aponte para New, e em seguida, clique em Project.

  3. Expanda Visual C# ou Visual Basic, selecione Web.

  4. Selecione o modelo de projeto de Aplicação Web ASP.NET .

  5. Em a caixa de Nome , digite e clique AdventureWorksServiceOK.

    O Visual Studio cria o projeto de AdventureWorksService .

  6. Em Gerenciador de Soluções, clique com o botão direito do mouse Default.aspx e selecione Excluir.Este arquivo não é necessário em essa explicação passo a passo.

Criando um modelo de dados de entidade para o serviço

Para expor dados a um aplicativo usando WCF Data Services, você deve definir um modelo de dados para o serviço.WCF Data Services suporta dois tipos de modelos de dados: Os modelos de dados de entidade e modelos personalizados de dados que são definidos usando o common language runtime (CLR) objeto que implementa a interface de IQueryable<T>.Em essa explicação passo a passo, você cria um modelo de dados de entidade para o modelo de dados.

Para criar um modelo de dados de entidade

  1. No menu Project, clique em Add New Item.

  2. Modelos instalados lista, clique Dados, e selecione o item de projeto de Modelo de entidade de dados ADO.NET .

  3. Altere o nome para AdventureWorksModel.edmx, e clique Adicionar.

    Assistente de modelo de dados de entidade Abre.

  4. Em a página de Escolha o conteúdo modelo , clique Gere de banco de dados, e clique Avançar.

  5. Em a página de Escolha a Conexão de Dados , selecione uma das seguintes opções:

    • Se uma conexão de dados ao banco de dados de exemplo AdventureWorksLT está disponível na lista suspensa, selecione.

      -  ou  -

    • Clique Nova conexão e criar uma conexão para o banco de dados AdventureWorksLT.

  6. Em a página de Escolha a Conexão de Dados , certifique-se de que a opção de Salvar configurações de conexão de entidade em App.Config como está selecionada e clique em Avançar.

  7. Em a página de Escolher Objetos do Banco de Dados , expanda Tabelas, selecione a tabela de SalesOrderHeader .

  8. Clique em Concluir.

Criando o serviço

Crie WCF Data Services para expor os dados no modelo de dados de entidade a um aplicativo WPF.

Para criar o serviço

  1. No menu Project, selecione Add New Item.

  2. Modelos instalados lista, clique Web, e selecione o item de projeto de Serviço de dados WCF .

  3. Em a caixa de Nome , digite e clique AdventureWorksService.svcAdicionar.

    O Visual Studio adiciona AdventureWorksService.svc ao projeto.

Configurando o serviço

Você deve configurar o serviço para operar no modelo de dados de entidade que você criou.

Para configurar o serviço

  1. Em o arquivo de código de AdventureWorks.svc , substitua a declaração de classe de AdventureWorksService com o código a seguir.

    Public Class AdventureWorksService
        Inherits DataService(Of AdventureWorksLTEntities)
    
        ' This method is called only once to initialize service-wide policies.
        Public Shared Sub InitializeService(ByVal config As IDataServiceConfiguration)
            config.SetEntitySetAccessRule("SalesOrderHeaders", EntitySetRights.All)
            config.UseVerboseErrors = True
        End Sub
    End Class
    
    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);
        }
    }
    

    Esse código atualiza a classe de AdventureWorksService de modo que deriva de DataService<T> que opera na classe de contexto de objeto de AdventureWorksLTEntities no seu modelo de dados de entidade.Também atualiza o método de InitializeService para permitir que clientes de acesso de leitura/gravação completo para a entidade de serviço de SalesOrderHeader .

  2. Compilar o projeto, e verifique que compila sem erros.

Criando o aplicativo cliente WPF

Para exibir os dados de WCF Data Services, crie um novo aplicativo WPF com uma fonte de dados que é baseado no serviço.Posteriormente em esta explicação passo a passo, você adicionará controles associados a dados para o aplicativo.

Para criar o aplicativo cliente WPF

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse no nó da solução, clique Adicionar, e selecione Novo Projeto.

  2. Em a caixa de diálogo de Novo Projeto , expanda Visual C# ou Visual Basic, selecione Janelas.

  3. Selecione o modelo de projeto de Aplicativo WPF .

  4. Em a caixa de Nome , digite e clique AdventureWorksSalesEditorOK.

    O Visual Studio adiciona o projeto de AdventureWorksSalesEditor à solução.

  5. No menu Data, clique em Show Data Sources.

    A janela Data Sources é aberta.

  6. Na janela Data Sources, clique em Add New Data Source.

    O Data Source Configuration Wizard é aberto.

  7. Em a página de Escolher um Tipo de Fonte de Dados do assistente, Serviço selecione e clique em Avançar.

  8. Na caixa Adicionar serviço de referência caixa de diálogo, clique em Descubra .

    O Visual Studio procura a solução atual por serviços disponíveis, e adiciona AdventureWorksService.svc à lista de serviços disponíveis na caixa de Serviços .

  9. Em a caixa de Namespace , digite AdventureWorksService.

  10. Em a caixa de Serviços , clique em AdventureWorksService.svc e clique em OK.

    O Visual Studio baixa informações de serviço e então retorna a Assistente para Configuração de Fonte de Dados.

  11. Em a página de Adicionar referência de serviço , clique Concluir.

    O Visual Studio adiciona os nós que representam os dados retornados pelo serviço para a janela de Fontes de Dados .

Definindo a interface do usuário da janela

Adicionar vários botões à janela alterando o XAML no criador de WPF.Posteriormente em esta explicação passo a passo, você adicionará código que permite aos usuários exibir e atualizar registros de vendas usando esses botões.

Para criar o layout da janela

  1. Em Gerenciador de Soluções, clique duas vezes em MainWindow.xaml.

    A janela é aberta no WPF designer.

  2. Em o modo de XAML o designer, adicione o seguinte código entre as marcas de <Grid> :

    <Grid.RowDefinitions>
        <RowDefinition Height="75" />
        <RowDefinition Height="525" />
    </Grid.RowDefinitions>
    <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75">&lt;</Button>
    <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75">&gt;</Button>
    <Button HorizontalAlignment="Right" Margin="0,21,46,24" Name="saveButton" Width="110">Save changes</Button>
    
  3. Crie o projeto.

Criando controles associados a dados

Criar controles que exibem registros de clientes arrastando o nó de SalesOrderHeaders da janela de Fontes de Dados para o designer.

Para criar controles associados a dados

  1. Em a janela de Fontes de Dados , clique no menu drop-down para o nó de SalesOrderHeaders e selecione Detalhes.

  2. Expanda o nó de SalesOrderHeaders .

  3. Para esse exemplo alguns campos não serão exibidos então clique no menu suspenso próximo dos nós e selecione Nenhum:

    • CreditCardApprovalCode

    • ModifiedDate

    • OnlineOrderFlag

    • RevisionNumber

    • rowguid

    Esta ação impede que o Visual Studio criar controles associados a dados para esses nós na próxima etapa.Para esta explicação passo a passo, presume-se que o usuário final não precisa consultar esses dados.

  4. De a janela de Fontes de Dados , arraste o nó de SalesOrderHeaders a linha de grade abaixo da linha que contém botões.

    O Visual Studio gera XAML e código que cria um conjunto de controles associados a dados na tabela de Produto .Para obter mais informações sobre o XAML e código gerado, consulte Controles do WPF de ligação a dados em Visual Studio.

  5. Em o designer, clique na caixa de texto ao lado do rótulo de Identificação do cliente .

  6. Em a janela de Propriedades , selecione a caixa de seleção próxima à propriedade de IsReadOnly .

  7. Defina a propriedade de IsReadOnly para cada uma das seguintes caixas de texto:

    • Número de pedido de compra

    • Identificação de ordem de venda

    • Número de pedido de venda

Carregar os dados de serviço

Use o objeto de proxy de serviço para dados de vendas de carregamento de serviço, e depois atribua os dados retornados para a fonte de dados para CollectionViewSource na janela WPF.

Para carregar os dados de serviço

  1. Em o designer, clique duas vezes no texto que lê: MainWindow para criar o manipulador de eventos de Window_Loaded .

  2. Substitua o manipulador de eventos pelo código a seguir.Certifique-se de que você substituir o endereço de localhost em esse código com o endereço do host local no seu computador de desenvolvimento.

    Private DataServiceClient As AdventureWorksService.AdventureWorksLTEntities
    Private SalesQuery As System.Data.Services.Client.DataServiceQuery(Of AdventureWorksService.SalesOrderHeader)
    Private OrdersViewSource As CollectionViewSource
    
    Private Sub Window_Loaded(ByVal Sender As Object, ByVal e As RoutedEventArgs) Handles MyBase.Loaded
    
        ' TODO: Modify the port number in the following URI as required.
        DataServiceClient = New AdventureWorksService.AdventureWorksLTEntities( _
        New Uri("https://localhost:32415/AdventureWorksService.svc"))
        SalesQuery = DataServiceClient.SalesOrderHeaders
    
        OrdersViewSource = CType(Me.FindResource("SalesOrderHeadersViewSource"), CollectionViewSource)
        OrdersViewSource.Source = SalesQuery.Execute()
        OrdersViewSource.View.MoveCurrentToFirst()
    End Sub
    
    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("https://localhost:45899/AdventureWorksService.svc"));
        salesQuery = dataServiceClient.SalesOrderHeaders;
    
        ordersViewSource = ((CollectionViewSource)(this.FindResource("salesOrderHeadersViewSource")));
        ordersViewSource.Source = salesQuery.Execute();
        ordersViewSource.View.MoveCurrentToFirst();
    }
    

Adicione código que permite aos usuários para percorrer os registros de vendas usando botões < e >.

Para permitir que os usuários naveguem entre registros de vendas

  1. Em o 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 de backButton_Click para o evento de Click .

  2. Adicione o seguinte código ao manipulador de eventos gerado de backButton_Click :

    If OrdersViewSource.View.CurrentPosition > 0 Then
        OrdersViewSource.View.MoveCurrentToPrevious()
    End If
    
    if (ordersViewSource.View.CurrentPosition > 0)
        ordersViewSource.View.MoveCurrentToPrevious();
    
  3. Retornar ao designer, clique duas vezes no botão >.

    O Visual Studio abre o arquivo code-behind e cria um novo manipulador de eventos de nextButton_Click para o evento de Click .

  4. Adicione o seguinte código ao manipulador de eventos gerado de nextButton_Click :

    If OrdersViewSource.View.CurrentPosition < CType(OrdersViewSource.View, CollectionView).Count - 1 Then
        OrdersViewSource.View.MoveCurrentToNext()
    End If
    
    if (ordersViewSource.View.CurrentPosition < ((CollectionView)ordersViewSource.View).Count - 1)
    {
        ordersViewSource.View.MoveCurrentToNext();
    }
    

Salvar alterações em registros de vendas

Adicione código que permite aos usuários a alterações de exibição e de salvar registros de vendas usando o botão de Salvar Alterações .

Para adicionar a capacidade de salvar alterações dos registros de vendas

  1. Em o designer, clique duas vezes no botão de Salvar Alterações .

    O Visual Studio abre o arquivo code-behind e cria um novo manipulador de eventos de saveButton_Click para o evento de Click .

  2. Adicione o seguinte código para o manipulador de eventos saveButton_Click.

    Dim CurrentOrder As AdventureWorksService.SalesOrderHeader = CType(OrdersViewSource.View.CurrentItem, AdventureWorksService.SalesOrderHeader)
    
    DataServiceClient.UpdateObject(CurrentOrder)
    DataServiceClient.SaveChanges()
    
    AdventureWorksService.SalesOrderHeader currentOrder = (AdventureWorksService.SalesOrderHeader)ordersViewSource.View.CurrentItem;
    dataServiceClient.UpdateObject(currentOrder);
    dataServiceClient.SaveChanges();
    

Testando o aplicativo

Compilar e executar o aplicativo para verificar que você possa exibir e atualizar registros de clientes.

Para testar o aplicativo

  1. Em o menu de Compilar , clique em Compilar solução.Verifique se a solução compile sem erros.

  2. Pressione CTRL + f5.

    O Visual Studio inicia o projeto de AdventureWorksService sem depurada.

  3. Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto de AdventureWorksSalesEditor .

  4. Em o menu de contexto, em Depurar, clique em Iniciar nova instância.

    O aplicativo é executado.Verifique o seguinte:

    • As caixas de texto exibe campos de dados diferentes do primeiro registro de vendas, que tem a identificação 71774de ordem de venda.

    • Você pode clicar nos botões > ou < para navegar através de outros registros de vendas.

  5. Em um dos registros de vendas, digite algum texto na caixa de Comentário , clique em Salvar Alterações.

  6. Feche o aplicativo e em seguida, inicie o aplicativo novamente do Visual Studio.

  7. Navegue para o registro de vendas que você modificou, e verifique que a alteração persistir após você fecha e reabre o aplicativo.

  8. Feche o aplicativo.

Próximas etapas

Após concluir essa explicação passo a passo, você pode executar as seguintes tarefas relacionadas:

Consulte também

Tarefas

Como: vincular controles WPF dados em Visual Studio

Passo a passo: Vinculação de controles WPF para um modelo de dados de entidade

Passo a passo: Vinculação de controles WPF em um Dataset

Conceitos

Controles do WPF de ligação a dados em Visual Studio

WPF e Silverlight Designer Overview

Visão geral de vinculação de dados

Outros recursos

ADO.NET Data Services Framework Overview

Introducing the Entity Framework