Usuário com melhor resposta
UWP BackButton ApplicationBar (Nova thread)

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="" 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="" 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="" 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();
}
}
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.
- Marcado como Resposta Robson William SilvaModerator quinta-feira, 15 de setembro de 2016 12:14
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.
-
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
-
-
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
-
Bom dia Renato A_F,
É a esse back button que você se refere?
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.
-
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
-
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.
- Marcado como Resposta Robson William SilvaModerator quinta-feira, 15 de setembro de 2016 12:14
-