Antes de iniciar a última parte desta série, gostaria de abrir este tópico desejando a todos um ótimo 2011.
Vale lembrar que o conteúdo do artigo está divido em três partes:
- Parte 1: Criação do Projeto e Desenvolvimento da GUI
- Parte 2: Desenvolvimento do nosso WCF (Windows Communication Foundation)
- Parte 3: Consumindo nosso WCF através da nossa aplicação
Todos prontos? Vamos lá!
Abra o projeto e verifique se sua “Solution Explorer” está desse jeito:
Se sua resposta foi NÃO, você acertou! Perceba que a pasta “Service References” ainda não existe no projeto e é ela que iremos criar agora. Será esse serviço que fará a ponte entre nossa aplicação Windows Phone 7 e nossa WCF.
Para adicionar o “Service References”, é só seguir os seguintes passos:
Clique com botão direito sobre o projeto e clique na opção “Add Service Reference”.

Depois de clicar em “Add Service Reference”, teremos a seguinte tela:
Antes de prosseguirmos, vamos à algumas informações úteis sobre essa tela:
- O botão “Discover” vai procurar serviços que estejam dentro da sua solução. Ao clicar nesse botão, os serviços aparecerão no campo “Address”.
- Clicando em “Go”, aparecerão de fato seus serviços na caixa “Services”.
- Expandindo o serviço selecionado, você poderá ver os métodos contidos nele através da caixa “Operations“.
Clicando em OK, nossa “Solution Explorer” ficará assim:

Pronto, agora temos uma interface de comunicação entre nossa aplicação Windows Phone 7 e o mundo exterior, através do nosso serviço. Clique com o botão direito sobre o MainPage.xaml e selecione a opção “View Code” ou simplesmente F7.
Como iremos implementar um número considerável de linhas, irei escrevendo e comentando cada bloco e no final disponibilizarei todo o projeto para que vocês possam implementar nos seus projetos, ok?
Antes de mais nada, vamos trazer o nosso serviço através do Namespace que nós demos anteriormente. Lembre-se de que estou usando meu projeto. Caso você tenha criado com nomes diferentes, fique atento para não colocar o nome errado nos arquivos ou nas chamadas.
using Zodiac.SR_Zodiac;Criamos um “enum” para representar os 12 signos do zodíaco, de modo que não precisaremos informar o número que representa o signo, e sim o nome.
public enum SIGNO<br />{<br /> ARIES = 1,<br /> TOURO = 2,<br /> GEMEOS = 3,<br /> CANCER = 4,<br /> LEAO = 5,<br /> VIRGEM = 6,<br /> LIBRA = 7,<br /> ESCORPIAO = 8,<br /> SAGITARIO = 9,<br /> CAPRICORNIO = 10,<br /> AQUARIO = 11,<br /> PEIXES = 12,<br />}Criamos um método para alterar o título da tela de acordo com o signo escolhido.
private void EscreveTitulo(SIGNO p_nValue)<br /> {<br /> switch (p_nValue)<br /> {<br /> case SIGNO.ARIES:<br /> this.txtTituloPrevisao.Text = "Áries - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.TOURO:<br /> this.txtTituloPrevisao.Text = "Touro - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.GEMEOS:<br /> this.txtTituloPrevisao.Text = "Gêmeos - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.CANCER:<br /> this.txtTituloPrevisao.Text = "Câncer - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.LEAO:<br /> this.txtTituloPrevisao.Text = "Leão - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.VIRGEM:<br /> this.txtTituloPrevisao.Text = "Virgem - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.LIBRA:<br /> this.txtTituloPrevisao.Text = "Libra - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.ESCORPIAO:<br /> this.txtTituloPrevisao.Text = "Escorpião - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.SAGITARIO:<br /> this.txtTituloPrevisao.Text = "Sagitário - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.CAPRICORNIO:<br /> this.txtTituloPrevisao.Text = "Capricórnio - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.AQUARIO:<br /> this.txtTituloPrevisao.Text = "Aquário - Seu Horóscopo Hoje:";<br /> break;<br /> case SIGNO.PEIXES:<br /> this.txtTituloPrevisao.Text = "Peixes - Seu Horóscopo Hoje:";<br /> break;<br /> default:<br /> break;<br /> }<br /> }Criamos um método chamado LoadService. Esse método irá disparar um evento criado por nós para que as informações desejadas sejam exibidas na tela do aparelho.
LoadService:
public void LoadService(SIGNO p_nValue)<br /> {<br /> try<br /> {<br /> ServiceZodiacClient zc = new ServiceZodiacClient();<br /> zc.GetPrevisaoCompleted += new EventHandler<SR_Zodiac.GetPrevisaoCompletedEventArgs>(zc_GetPrevisaoCompleted);<br /> zc.GetPrevisaoAsync((int)p_nValue);<br /> this.EscreveTitulo(p_nValue);<br /> }<br /> catch (Exception ex)<br /> {<br /> throw ex;<br /> }<br /> }Evento zc_GetPrevisaoCompleted:
void zc_GetPrevisaoCompleted(object sender, SR_Zodiac.GetPrevisaoCompletedEventArgs e)<br /> {<br /> try<br /> {<br /> int pos = -1;<br /> String sTexto;<br /><br /> this.ContentGrid.Visibility = System.Windows.Visibility.Collapsed;<br /> this.TextGrid.Visibility = System.Windows.Visibility.Visible;<br /><br /> sTexto = e.Result.ToString();<br /> pos = sTexto.IndexOf("<a");<br /><br /> this.txtPrevisao.Text = sTexto.Substring(0, pos - 1);<br /> }<br /> catch (Exception ex)<br /> {<br /> this.txtPrevisao.Text = ex.Message;<br /> }<br /> }E, no evento KeyDown de cada signo, chamaremos o método LoadService, passando como parâmetro o valor correspondente ao signo clicado.
private void iAries_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)<br /> {<br /> try<br /> {<br /> this.LoadService(SIGNO.ARIES);<br /> }<br /> catch (Exception ex)<br /> {<br /> throw ex;<br /> }<br /> }Explicando:
No método LoadService, criamos um objeto ServiceZodiacClient para poder fazer a comunicação com nosso serviço. Esse serviço trabalha com eventos, ou seja, é preciso que um evento seja disparado para que ele seja “ativado” e por isso escrevemos a linha “zc.GetPrevisaoCompleted += new EventHandler…”, estamos fazendo uma chamada do evento GetPrevisaoCompleted do nosso serviço.
No “zc.GetPrevisaoAsync”, estamos passando o valor do parâmetro esperado pelo serviço. Depois disso, nosso evento é disparado, e o resultado retornado é o texto vindo do xml recuperado, como vimos na parte 2 do artigo.
Na prática, nossa aplicação final funcionará assim:
Clicamos sobre o signo selecionado.
E obtemos o horóscopo do dia.
Bem, pessoal, aqui fecho essa série de artigos sobre Windows Phone 7. Os arquivos utilizados nessa série estão aqui.
Uma abraço a todos e até o próximo artigo.







