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

Esta explicação passo a passo, você criará um aplicativo do WPF que contém os controles ligados a dados. Os controles estão vinculados aos registros de cliente são encapsulados em um 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 ilustra as seguintes tarefas:

  • Criando um modelo de dados de entidade que é gerada a partir de dados no banco de dados de exemplo AdventureWorksLT.

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

  • A criação de um conjunto de controles ligados a dados, arrastando itens da Fontes de dados janela para o WPF designer.

  • Criando botões navegam Avançar e retroceder nos registros do cliente.

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

    ObservaçãoObservação

    Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de 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 Trabalhando com configurações.

Pré-requisitos

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

  • Visual Studio 2010.

  • Acesso a uma instância em execução de SQL Server ou SQL Server Express tem o banco de dados de exemplo AdventureWorksLT anexado a ele. Você pode baixar o banco de dados de AdventureWorksLT a site CodePlex da.

Conhecimento prévio dos seguintes conceitos também é útil, mas não é necessária para concluir o passo a passo:

Criando o projeto de serviço

Iniciar esta explicação passo a passo, criando um projeto para um 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 Basice selecione Web.

  4. Selecione o ASP.NET Web Application o modelo de projeto.

  5. No nome , digite AdventureWorksService e clique em OK.

    Visual Studio cria o AdventureWorksService project.

  6. Em Solution Explorer, com o botão direito default. aspx e selecione Excluir. Este arquivo não é necessário para esta explicação passo a passo.

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

Para expor os dados para um aplicativo usando um WCF Data Services, você deve definir um modelo de dados para o serviço. O WCF Data Services aceita dois tipos de modelos de dados: Modelos de dados de entidade e modelos de dados personalizados são definidos usando objetos common language runtime (CLR) que implementam o IQueryable<T> interface. Esta explicação passo a passo, você pode criar 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. Selecione o ADO.Modelo de dados de entidade NET o item de projeto.

  3. Altere o nome para AdventureWorksModel.edmxe clique em Add.

    O Assistente de modelo de dados de entidade abre.

  4. Sobre o Escolher o modelo de conteúdo página, clique em gerar do banco de dadose clique em próximo.

  5. Sobre o Choose Your Data Connection de página, selecione uma das seguintes opções:

    • Se uma conexão de dados no banco de dados de amostra de AdventureWorksLT estiver disponível na lista suspensa, selecione-o.

      - ou -

    • Clique em Nova conexão e crie uma conexão ao banco de dados AdventureWorksLT.

  6. No Choose Your Data Connection de página, certifique-se de que o Salvar configurações de conexão de entidade em app. config, como opção está selecionada e clique em próximo.

  7. Sobre o Escolha seus objetos de banco de dados de página, expanda tabelase selecione o SalesOrderHeader tabela.

  8. Clique em Finish.

Criando o serviço

Criar um WCF Data Services para expor os dados no modelo de dados de entidade para um aplicativo do WPF.

Para criar o serviço.

  1. No menu Project, selecione Add New Item.

  2. Selecione o O serviço do WCF dados o item de projeto.

  3. No nome , digite AdventureWorksService.svc e clique em Add.

    Adiciona a Visual Studio a AdventureWorksService.svc para o projeto.

Configurando o serviço

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

Para configurar o serviço

  1. No AdventureWorks.svc o arquivo de código, substitua o AdventureWorksService a declaração de classe 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);
        }
    }
    

    Este código atualiza o AdventureWorksService para que ela deriva da classe um DataService<T> que opera na AdventureWorksLTEntities classe de contexto do objeto em seu modelo de dados de entidade. Ele também atualiza o InitializeService método para permitir que clientes de acesso de leitura/gravação total serviço para o SalesOrderHeader de entidade.

    Para obter mais informações sobre classes de objeto de contexto no ADO.NET Entity Framework, consulte Object Services Overview (Entity Framework).

  2. Compile o projeto e verifique se ele foi compilado sem erros.

Criando o aplicativo cliente do WPF

Para exibir os dados a partir de WCF Data Services, crie um novo aplicativo do WPF com uma fonte de dados baseado em serviço. Posteriormente nesta explicação passo a passo, você adicionará controles ligados a dados para o aplicativo.

Para criar o aplicativo cliente do WPF

  1. Em Solution Explorer, o botão direito do mouse no nó da solução, clique em Adde selecione Novo projeto.

    ObservaçãoObservação

    Em projetos de Visual Basic, o nó de solução aparece apenas na Solution Explorer quando o Always show solution caixa de seleção estiver marcada na Geral, projetos e soluções, caixa de diálogo Options.

  2. No Novo projeto caixa de diálogo, expanda Visual C# ou Visual Basice selecione Windows.

  3. Selecione o Aplicativo WPF o modelo de projeto.

  4. No nome , digite AdventureWorksSalesEditor e clique em OK.

    Adiciona a Visual Studio a AdventureWorksSalesEditor o projeto à 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. No Escolher um tipo de fonte de dados página do assistente, selecione Service e, em seguida, clique em próximo.

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

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

  9. No Namespace , digite AdventureWorksService.

  10. No serviços , clique em AdventureWorksService.svc e, em seguida, clique em OK.

    Visual Studio as informações do serviço de downloads e retorna para o Data Source Configuration Wizard.

  11. No Add Service Reference página, clique em Concluir.

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

Definindo a Interface do usuário da janela

Adicione vários botões na janela, modificando o XAML no designer WPF. Posteriormente nesta explicação passo a passo, você irá adicionar código que permite aos usuários exibir e atualizar os registros de vendas usando esses botões.

Para criar o layout de janela

  1. Em Solution Explorer, clique duas vezes em MainWindow. XAML.

    A janela se abre no designer WPF.

  2. No XAML Exibir do designer, adicione o seguinte código entre o <Grid> marcas:

    <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.

Criação de controles ligados a dados

Criar controles que exibem os registros de clientes, arrastando o SalesOrderHeaders nó a partir de Fontes de dados janela para o designer.

Para criar os controles ligados a dados

  1. No Fontes de dados janela, clique no menu drop-down para o SalesOrderHeaders nó e selecione detalhes.

  2. Expanda o SalesOrderHeaders nó.

  3. Neste exemplo, alguns campos não serão exibidos assim, clique em menu drop-down ao lado de nós a seguir e selecione Nenhum:

    • CreditCardApprovalCode

    • ModifiedDate

    • OnlineOrderFlag

    • RevisionNumber

    • ROWGUID

    Essa ação impede que o Visual Studio de criar os controles ligados 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 ver os dados.

  4. Do Fontes de dados janela, arraste o SalesOrderHeaders o nó para a linha de grade em linha que contém os botões.

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

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

  6. No Propriedades janela, selecione a caixa de seleção ao lado do IsReadOnly propriedade.

  7. Definir o IsReadOnly propriedade para cada uma das seguintes caixas de texto:

    • Número de ordem de compra

    • Identificação de ordem de venda

    • Número do pedido

Carregar os dados do serviço

Use o objeto de proxy de serviço para carregar dados de vendas do serviço e, em seguida, atribuir os dados retornados para a fonte de dados para o CollectionViewSource na janela do WPF.

Para carregar os dados do serviço

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

  2. Substitua o manipulador de eventos com o código a seguir. Certifique-se de que você substitua o localhost endereço nesse código, com o endereço de host local no 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 percorrer os registros de vendas usando o < e > botões.

Para permitir aos usuários navegar pelos registros de vendas

  1. No designer, clique duas vezes o < o botão na superfície de janela.

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

  2. Substitua o gerado backButton_Click o manipulador de eventos com o seguinte código:

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

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

  4. Substitua o gerado nextButton_Click o manipulador de eventos com o código a seguir.

    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();
    }
    

Salvando alterações em registros de vendas

Adicione o código que permite que os usuários de exibir e salvar alterações em registros de vendas usando o Salvar as alterações botão.

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

  1. No designer, clique duas vezes o Salvar alterações botão.

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

  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

Construir e executar o aplicativo para verificar que você pode exibir e atualizar registros de cliente.

Para testar o aplicativo

  1. Em Build menu, clique em Build Solution. Verifique se que a solução foi compilado sem erros.

  2. Pressione ctrl + f5.

    Inicia a Visual Studio a AdventureWorksService o projeto sem depurá-lo.

  3. Em Solution Explorer, com o botão direito do AdventureWorksSalesEditor project.

  4. No menu de contexto, em Debug, clique em Iniciar nova instância.

    O aplicativo é executado. Verifique o seguinte:

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

    • Você pode clicar a > ou < os botões para navegar pelos outros registros de vendas.

  5. Em um dos registros de vendas, digite algum texto no comentário caixa e clique Salvar as alterações.

  6. Feche o aplicativo e inicie novamente o aplicativo de Visual Studio.

  7. Navegue até o registro de venda que você tenha alterado e verificar que a alteração persiste após fechar e reabrir o aplicativo.

  8. Feche o aplicativo.

Próximas etapas

Depois de concluir este passo a passo, você pode executar as seguintes tarefas:

Consulte também

Tarefas

Como: Vincular controles WPF dados em Visual Studio

Demonstra Passo a passo: A vinculação de controles do WPF para um modelo de dados de entidade

Demonstra Passo a passo: Controles do WPF de ligação a um Dataset

Conceitos

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

Visão geral do WPF e do Silverlight Designer

Revisão de Associação de Dados

Outros recursos

ADO.NET Data Services Framework Overview

Data Model

Entity Data Model

Introducing the Entity Framework