Resgatando a série de tutoriais sobre Windows Phone 7, vamos hoje ver como fazemos para criar um sistema básico de navegação entre duas páginas. Para isso, criaremos um projeto simples que consistirá em um link que fará a navegação entre as páginas. Um link? Por que não um botão? Porque, segundo as diretrizes da interface Metro, a navegação deverá sempre ocorrer pelo próprio conteúdo. Todo e qualquer item que não contribuir com o conteúdo da aplicação deve ser evitado. Aos poucos vamos nos acostumando com isso! 🙂
Bom, vamos começar criando um novo projeto no Visual Studio 2010 for Windows Phone. Clique no menu File e selecione New Project…. Dentro da categoria Visual C#, selecione Windows Phone Application. Dê o nome de Navegacao (sempre evitando acentuação e caracteres especiais!).
Em seguida, clique com o botão direito sobre o nosso recém criado projeto Navegacao no Solution Explorer e selecione a opção Add -> New Item…. Procure pelo item Windows Phone Portraid Page. Dê o nome de Pagina2.xaml.
Agora, vamos criar o link de navegação nas páginas. No arquivo MainPage.xaml, adicione, adicionaremos um item HyperlinkButton dentro do Grid chamado ContentPanel. Adicione-o da seguinte forma:
Pronto. Na visualização do layout, no lado esquerdo da tela, já será possível visualizar o hyperlink. Para melhorar a experiência, modifique o título das páginas para principal e página 2 para as duas páginas. Basta selecioná-lo e modificar o valor Text no quadro Properties.
Agora, resta implementarmos os métodos para realizar a navegação. Abra o arquivo MainPage.xaml.cs (se ele não estiver visível no Solution Explorer, basta clicar na setinha para expandir o arquivo Mainpage.xaml). Iremos adicionar a classe MainPage o método que definimos no XML. Assim, depois do método PhoneApplicationPage_Loaded(), adicione o seguinte método:
Definimos nesse método que, através no NavigationService, navegaremos até a Pagina2.xaml, através de uma URL relativa, ou seja, o caminho descrito no primeiro parâmetro do objeto Uri, é relativo a nossa própria página.
Nesse método, verificamos o conteúdo da flag CanGoBack, que nos diz se é possível voltarmos de página. Caso ela seja verdadeira, fazemos uma chamada ao método GoBack() do NavigationService.