none
UWP BackButton ApplicationBar (Nova thread) RRS feed

  • Pergunta

  • Boa tarde. Sou Novato em C# e UWP (Windows 10 Anniversary). Estou fazendo aquele cursinho no MVA, Windows 10 Desenvolvimento para Principiantes. N consigo implementar o evento para fazer a página voltar. Consigo adicionar o botão backbutton na barra de título. Só que ao clicar não volta para a página anterior.  Sou novato. Vai com calma aí. Vou copiar e colocar o código aqui:

    Favor Não fechar a Thread. Estou com problemas para receber alertas!

    E é um APP UWP. Mas estou aprendendo a desenvolver APPs para Windows 10 1607.

    Softwares Utilizados: Windows 10 Anniversary 1607 14393.105 (Atualizado), Visual Studio 2015 Community Update 3 (Atualizado).

    <!--MainPage.xaml-->

    ...

    <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!--Relative panel--> <RelativePanel Grid.Row="0"> <Button FontSize="22" Content="&#xE700;" FontFamily="Segoe MDL2 Assets" Click="Button_Click"/> <TextBlock /> </RelativePanel> <!--SplitView--> <SplitView x:Name="SplitViewListBox" Grid.Row="1" DisplayMode="Overlay" OpenPaneLength="200" CompactPaneLength="56" HorizontalAlignment="Left"> <SplitView.Pane> <!--List Box + Evento--> <ListBox x:Name="IconListBox" SelectionMode="Single" SelectionChanged="IconListBox_SelectionChanged"> <!--ListBox Item Pag1--> <ListBoxItem x:Name="lbiPag2"> <StackPanel Orientation="Horizontal"> <TextBlock FontSize="22" FontFamily="Segoe MDL2 Assets" Text="&#xE80F;" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock x:Name="txbListBoxItemPag2" FontSize="22" Text="Pag 2" Margin="10,0"/> </StackPanel> </ListBoxItem> <!--ListBox Item Pag2--> <ListBoxItem x:Name="lbiPag3"> <StackPanel Orientation="Horizontal"> <TextBlock FontSize="22" FontFamily="Segoe MDL2 Assets" Text="&#xE80F;" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock x:Name="txbListBoxItemPag3" FontSize="22" Text="Pag 3" Margin="10,0"/> </StackPanel> </ListBoxItem> </ListBox> </SplitView.Pane> <!--SplitView Content--> <SplitView.Content> <Frame x:Name="MyFrame"/> </SplitView.Content> </SplitView> </Grid>

    ...

    // MainPage.xaml.cs

    // IconListBox SelectionChanged - MainPage private void IconListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (lbiPag2.IsSelected) { MyFrame.Navigate(typeof(Pag2)); SplitViewListBox.IsPaneOpen = !SplitViewListBox.IsPaneOpen; } if (lbiPag3.IsSelected) { MyFrame.Navigate(typeof(Pag3)); SplitViewListBox.IsPaneOpen = !SplitViewListBox.IsPaneOpen; } } // ButtonClick Menu private void Button_Click(object sender, RoutedEventArgs e) { SplitViewListBox.IsPaneOpen = !SplitViewListBox.IsPaneOpen; }

    // App.xaml.cs

        sealed partial class App : Application
        {
            public App()
            {
                this.InitializeComponent();
                this.Suspending += OnSuspending;
            }

            protected override void OnLaunched(LaunchActivatedEventArgs e)
            {
    #if DEBUG
                if (System.Diagnostics.Debugger.IsAttached)
                {
                    this.DebugSettings.EnableFrameRateCounter = false;
                }
    #endif
                Frame rootFrame = Window.Current.Content as Frame;


                if (rootFrame == null)
                {
                    // Create a Frame to act as the navigation context and navigate to the first page
                    rootFrame = new Frame();

                    rootFrame.NavigationFailed += OnNavigationFailed;
                    rootFrame.Navigated += RootFrame_Navigated;

                    if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                    {
                        //TODO: Load state from previously suspended application
                    }

                    SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested;
                    Window.Current.Activate();
                 
                    Window.Current.Content = rootFrame;

                }

                if (e.PrelaunchActivated == false)
                {
                    if (rootFrame.Content == null)
                    {
                        rootFrame.Navigate(typeof(MainPage), e.Arguments);
                    }
                    Window.Current.Activate();
                }
            }

            // RootFrame_Navigated
            private void RootFrame_Navigated(object sender, NavigationEventArgs e)
            {
                SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = ((Frame)sender).CanGoBack ? AppViewBackButtonVisibility.Visible : AppViewBackButtonVisibility.Collapsed;
            }


            // APP BackRequested
            private void App_BackRequested(object sender, BackRequestedEventArgs e)
            {
                Frame rootFrame = Window.Current.Content as Frame;
                if (rootFrame.CanGoBack)
                {
                    rootFrame.GoBack();
                    e.Handled = true;
                }
            }

            void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
            {
                throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
            }

            private void OnSuspending(object sender, SuspendingEventArgs e)
            {
                var deferral = e.SuspendingOperation.GetDeferral();
                //TODO: Save application state and stop any background activity
                deferral.Complete();
            }
        }


    sexta-feira, 2 de setembro de 2016 15:33

Respostas

  • Boa tarde Renato A_F,

    Neste link há alguns vídeos muito explicativos. Talvez possa ajudar.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 9 de setembro de 2016 17:44
    Moderador

Todas as Respostas

  • Boa tarde Renato A_F,

    Obrigado pela participação no Fórum MSDN.

    Você escreveu que ao clicar para voltar não funciona. Há alguma mensagem de erro?

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 2 de setembro de 2016 18:53
    Moderador
  • Nenhum Erro.  Vou fazer o seguinte. Vou gravar um vídeo e upar no youtube.
    • Editado Renato A_F sábado, 3 de setembro de 2016 12:55
    sábado, 3 de setembro de 2016 12:51
  • Olha. Não consegui gravar. Deixei esse evento para depois. Estou seguindo o curso. Se alguém puder ajudar eu agradeço.
    domingo, 4 de setembro de 2016 17:25
  • Se eu tirar o "MyFrame.Navigate(typeof(Pag2));" e substituir por "Frame.Navigate(typeof(Pag2));" em MainPage.xaml.cs o botão back aparece na barra de título. Mas os controles que adicionei emMainPage.xaml some. Pq?

    Um exemplo de APP é o APP Notícias do Windows 10. No curso eles ensinam a adicionar um botão no APP e a implementar o evento para voltar. Ele menciona um APP da Microsoft. Vi aquele botão na barra de título e comecei a pesquisar sobre ele. Encontrei alguns exemplos no próprio site da Microsoft. Mas não consegui implementar.


    • Editado Renato A_F segunda-feira, 5 de setembro de 2016 15:14
    segunda-feira, 5 de setembro de 2016 15:13
  • Bom dia Renato A_F,

    É a esse back button que você se refere?

    Back button navigation

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 6 de setembro de 2016 13:28
    Moderador
  • Sim. Tentei adicionar algumas imagens aqui. Mas deu erro. Informou que não é possível adicionar imagens até verificar minha conta. Se eu trocar MyFrame.navigate por Frame.navigate (em MainPage.xaml.cs) o botão na barra de título aparece. Mas ao clicar nele volto para MainPage e não para a página 1 (caso eu esteja navegando da pag1 para pag2). E os controles que eu adicionei em MainPage somem.
    • Editado Renato A_F terça-feira, 6 de setembro de 2016 14:55
    terça-feira, 6 de setembro de 2016 14:54
  • Boa tarde Renato A_F,

    Neste link há alguns vídeos muito explicativos. Talvez possa ajudar.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 9 de setembro de 2016 17:44
    Moderador
  • Obrigado! Vou assistir e depois respondo se consegui algo.
    segunda-feira, 12 de setembro de 2016 21:29