1800 pág.

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