A maior rede de estudos do Brasil

Grátis
1800 pág.
indroducao Xammarin.Froms

Pré-visualização | Página 7 de 50

define declarativamente a interface do usuário para a página:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
 xmlns:local="clr-namespace:Phoneword;assembly=Phoneword"
 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
 x:Class="Phoneword.CallHistoryPage"
 Title="Call History">
 <ContentPage.Padding>
 <OnPlatform x:TypeArguments="Thickness">
 <On Platform="iOS" Value="20, 40, 20, 20" />
 <On Platform="Android, UWP" Value="20" />
 </OnPlatform>
 </ContentPage.Padding>
 <StackLayout>
 <ListView ItemsSource="{x:Static local:App.PhoneNumbers}" />
 </StackLayout>
</ContentPage>
Salve as alterações em CallHistoryPage.xaml ao pressionar CTRL+S e feche o arquivo.
5. No Gerenciador de Soluções, clique duas vezes no arquivo App.xaml.cs no projeto compartilhado
Phoneword para abri-lo:
6. Em App.xaml.cs, importe o namespace System.Collections.Generic , adicione a declaração da propriedade 
PhoneNumbers , inicialize a propriedade no construtor App e inicialize a propriedade MainPage para que seja
uma NavigationPage . A coleção PhoneNumbers será usada para armazenar uma lista de cada número de
telefone traduzido chamado pelo aplicativo:
using System.Collections.Generic;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
namespace Phoneword
{
 public partial class App : Application
 {
 public static IList<string> PhoneNumbers { get; set; }
 public App()
 {
 InitializeComponent();
 PhoneNumbers = new List<string>();
 MainPage = new NavigationPage(new MainPage());
 }
 ...
 }
}
<StackLayout VerticalOptions="FillAndExpand"
 HorizontalOptions="FillAndExpand"
 Orientation="Vertical"
 Spacing="15">
 ...
 <Button x:Name="callButton" Text="Call" IsEnabled="false" Clicked="OnCall" />
 <Button x:Name="callHistoryButton" Text="Call History" IsEnabled="false"
 Clicked="OnCallHistory" />
</StackLayout>
Salve as alterações em App.xaml.cs ao pressionar CTRL + S e feche o arquivo.
7. No Gerenciador de Soluções, clique duas vezes no arquivo MainPage.xaml no projeto compartilhado
Phoneword para abri-lo:
8. Em MainPage.xaml, adicione um controle Button no final do controle StackLayout . O botão será usado
para navegar até a página do histórico de chamadas:
Salve as alterações em MainPage.xaml ao pressionar CTRL+S e feche o arquivo.
using System;
using Xamarin.Forms;
namespace Phoneword
{
 public partial class MainPage : ContentPage
 {
 ...
 async void OnCall(object sender, EventArgs e)
 {
 ...
 if (dialer != null) {
 App.PhoneNumbers.Add (translatedNumber);
 callHistoryButton.IsEnabled = true;
 dialer.Dial (translatedNumber);
 }
 ...
 }
 async void OnCallHistory(object sender, EventArgs e)
 {
 await Navigation.PushAsync (new CallHistoryPage ());
 }
 }
}
9. No Gerenciador de Soluções, clique duas vezes em MainPage.xaml.cs para abri-lo:
10. Em MainPage.xaml.cs, adicione o método do manipulador de eventos OnCallHistory e modifique o
método do manipulador de eventos OnCall para adicionar o número de telefone traduzido à coleção 
App.PhoneNumbers e habilitar o callHistoryButton , desde que a variável dialer não seja null :
Salve as alterações em MainPage.xaml.cs ao pressionar CTRL+S e feche o arquivo.
11. No Visual Studio, selecione o item de menu Compilar > Compilar Solução (ou pressione
CTRL+SHIFT+B). O aplicativo será criado e uma mensagem de êxito será exibida na barra de status do
Visual Studio:
Se houver erros, repita as etapas anteriores e corrija qualquer erro até que o aplicativo seja compilado com
êxito.
12. Na barra de ferramentas do Visual Studio, pressione o botão Iniciar (o botão triangular que se parece com
o botão Reproduzir) para inicializar o aplicativo:
 
13. No Gerenciador de Soluções, clique com botão direito do mouse no projeto Phoneword.Droid e
selecione Definir como Projeto de Inicialização.
14. Na barra de ferramentas do Visual Studio, pressione o botão Iniciar (o botão triangular que se parece com
o botão Reproduzir) para inicializar o aplicativo em um emulador do Android.
15. Se você tiver um dispositivo iOS e atender aos requisitos de sistema do Mac para o desenvolvimento do
Xamarin.Forms, use uma técnica semelhante para implantar o aplicativo no dispositivo iOS. Como
alternativa, implante o aplicativo para o simulador remoto de iOS.
Observação: não há suporte para chamadas telefônicas em todos os simuladores.
Parabéns por concluir um aplicativo Xamarin.Forms multitela. O próximo tópico deste guia analisa as etapas
seguidas para entender a navegação de página e a associação de dados usando o Xamarin.Forms.
Links relacionados
Phoneword (amostra)
PhonewordMultiscreen (amostra)
Aprofundamento na multitela do Xamarin.Forms
13/07/2018 • 6 minutes to read • Edit Online
Navegação
public App ()
{
 ...
 MainPage = new NavigationPage (new MainPage ());
}
async void OnCallHistory(object sender, EventArgs e)
{
 await Navigation.PushAsync (new CallHistoryPage ());
}
await Navigation.PopAsync();
Associação de dados
No Início rápido da multitela do Xamarim.Forms, o aplicativo Phoneword foi estendido para incluir uma segunda
tela que controla o histórico de chamadas para o aplicativo. Este artigo examina o que foi compilado para
entender a navegação de página e associação de dados em um aplicativo Xamarin.Forms.
O Xamarin.Forms fornece um modelo de navegação interna que gerencia a navegação e a experiência do usuário
de uma pilha de páginas. Este modelo implementa uma pilha UEPS (último a entrar, primeiro a sair) de objetos 
Page . Para mover de uma página para outra, um aplicativo enviará por push uma nova página para essa pilha.
Para retornar para a página anterior, o aplicativo exibirá a página atual da pilha.
O Xamarin.Forms tem uma classe NavigationPage que gerencia a pilha de objetos Page . A classe NavigationPage
também adicionará uma barra de navegação à parte superior da página que exibe um título e um botão Voltar
apropriado para a plataforma, que retornará à página anterior. O exemplo de código a seguir mostra como
encapsular um NavigationPage em torno da primeira página em um aplicativo:
Todas as instâncias do ContentPage têm uma propriedade Navigation que expõe métodos para modificar a pilha
de páginas. Esses métodos devem ser invocados somente se o aplicativo incluir um NavigationPage . Para navegar
até o CallHistoryPage , é necessário invocar o método PushAsync conforme demonstrado no exemplo de código
abaixo:
Isso faz com que o novo objeto CallHistoryPage seja enviado para a pilha de navegação. Para retornar
programaticamente à página original, o objeto CallHistoryPage deve invocar o método PopAsync , conforme
demonstrado no exemplo de código abaixo:
No entanto, no aplicativo Phoneword, esse código não é exigido porque a classe NavigationPage adiciona uma
barra de navegação à parte superior da página que inclui um botão Voltar apropriado para a plataforma, que
retornará à página anterior.
Vinculação de dados é usada para simplificar como um aplicativo Xamarin.Forms exibe e interage com seus
dados. Ela estabelece uma conexão entre a interface do usuário e o aplicativo subjacente. A classe BindableObject
public partial class App : Application
{
 public static List<string> PhoneNumbers { get; set; }
 public App ()
 {
 PhoneNumbers = new List<string>();
 ...
 }