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çã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:
Serviços de dados do WCF. Para obter mais informações, consulte ADO.NET Data Services Framework Overview.
Modelos de dados em WCF Data Services. Para obter mais informações, consulte Data Model.
Modelos de dados de entidade e o ADO.NET Entity Framework. Para obter mais informações, consulte Entity Data Model e Introducing the Entity Framework.
Trabalhando com o WPF designer. Para obter mais informações, consulte Visão geral do WPF e do Silverlight Designer.
Vinculação de dados do WPF. Para obter mais informações, consulte Revisão de Associação de Dados.
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
Inicie o Visual Studio.
No menu File, aponte para New, e em seguida, clique em Project.
Expanda Visual C# ou Visual Basice selecione Web.
Selecione o ASP.NET Web Application o modelo de projeto.
No nome , digite AdventureWorksService e clique em OK.
Visual Studio cria o AdventureWorksService project.
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
No menu Project, clique em Add New Item.
Selecione o ADO.Modelo de dados de entidade NET o item de projeto.
Altere o nome para AdventureWorksModel.edmxe clique em Add.
O Assistente de modelo de dados de entidade abre.
Sobre o Escolher o modelo de conteúdo página, clique em gerar do banco de dadose clique em próximo.
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.
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.
Sobre o Escolha seus objetos de banco de dados de página, expanda tabelase selecione o SalesOrderHeader tabela.
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.
No menu Project, selecione Add New Item.
Selecione o O serviço do WCF dados o item de projeto.
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
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).
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
Em Solution Explorer, o botão direito do mouse no nó da solução, clique em Adde selecione Novo projeto.
Observaçã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.
No Novo projeto caixa de diálogo, expanda Visual C# ou Visual Basice selecione Windows.
Selecione o Aplicativo WPF o modelo de projeto.
No nome , digite AdventureWorksSalesEditor e clique em OK.
Adiciona a Visual Studio a AdventureWorksSalesEditor o projeto à solução.
No menu Data, clique em Show Data Sources.
A janela Data Sources é aberta.
Na janela Data Sources, clique em Add New Data Source.
O Data Source Configuration Wizard é aberto.
No Escolher um tipo de fonte de dados página do assistente, selecione Service e, em seguida, clique em próximo.
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.
No Namespace , digite AdventureWorksService.
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.
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
Em Solution Explorer, clique duas vezes em MainWindow. XAML.
A janela se abre no designer WPF.
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"><</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>
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
No Fontes de dados janela, clique no menu drop-down para o SalesOrderHeaders nó e selecione detalhes.
Expanda o SalesOrderHeaders nó.
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.
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.
No designer, clique na caixa de texto ao lado do Identificação do cliente rótulo.
No Propriedades janela, selecione a caixa de seleção ao lado do IsReadOnly propriedade.
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
No designer, clique duas vezes o texto que lê: MainWindow para criar o Window_Loaded manipulador de eventos.
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(); }
Navegar pelos registros de vendas
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
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.
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();
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.
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
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.
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
Em Build menu, clique em Build Solution. Verifique se que a solução foi compilado sem erros.
Pressione ctrl + f5.
Inicia a Visual Studio a AdventureWorksService o projeto sem depurá-lo.
Em Solution Explorer, com o botão direito do AdventureWorksSalesEditor project.
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.
Em um dos registros de vendas, digite algum texto no comentário caixa e clique Salvar as alterações.
Feche o aplicativo e inicie novamente o aplicativo de Visual Studio.
Navegue até o registro de venda que você tenha alterado e verificar que a alteração persiste após fechar e reabrir o aplicativo.
Feche o aplicativo.
Próximas etapas
Depois de concluir este passo a passo, você pode executar as seguintes tarefas:
Saiba como usar o Fontes de dados janela no Visual Studio para ligar o WPF controla a outros tipos de fontes de dados. Para obter mais informações, consulte Demonstra Passo a passo: A vinculação de controles do WPF para um modelo de dados de entidade e Demonstra Passo a passo: Controles do WPF de ligação a um Dataset.
Saiba como usar o Fontes de dados janela no Visual Studio para exibir dados relacionados (ou seja, os dados em uma relação pai-filho) controles do WPF. Para obter mais informações, consulte Demonstra Passo a passo: Exibindo dados relacionados em um aplicativo WPF.
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