Sök…
Introduktion
Så snart applikationen har flera sidor / skärmar krävs ett sätt att navigera bland dem. Med UWP-applikationer hanteras navigeringen av kontrollen [Frame] [1]. Den visar inställningar [Sida] [2], stöder navigeringen till nya sidor och håller en historik för både bakåt och framåt navigering [1]: https://msdn.microsoft.com/en-us/library/windows/apps/ windows.ui.xaml.controls.frame.aspx [2]: https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.page.aspx
Skapa ram
En ram skapas som alla andra kontroller:
<Frame x:Name="contentRoot"
Navigated="OnNavigated"
Navigating="OnNavigating" />
De navigerade / navigerande händelserna kan sedan avlyssnas för att avbryta navigeringen eller visa / dölja bakåtknappen.
private void OnNavigating(object sender, NavigatingCancelEventArgs e)
{
if(contentRoot.SourcePageType == e.SourcePageType && m_currentPageParameter == e.Parameter)
{
// we are navigating again to the current page, we cancel the navigation
e.Cancel = true;
}
}
private void OnNavigated(object sender, NavigationEventArgs e)
{
// user has navigated to a newest page, we check if we can go back and show the back button if needed.
// we can also alter the backstack navigation history if needed
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = (contentRoot.CanGoBack ? AppViewBackButtonVisibility.Visible : AppViewBackButtonVisibility.Collapsed);
}
Navigera till en nyaste sida
För att navigera till en nyaste sida kan vi använda Navigera () -metoden från ramen.
contentRoot.Navigate(typeof(MyPage), parameter);
där contentRoot
är Frame- instansen och MyPage
en kontroll som ärver från Page
På MyPage
kommer metoden OnNavigatedTo () att kallas när navigeringen är klar (dvs. när användaren kommer in på sidan) så att vi kan utlösa eller slutföra laddningen av sidinformationen. Metoden OnNavigatedFrom () kommer att anropas när vi lämnar sidan så att vi kan släppa det som måste släppas.
public class MyPage : Page
{
protected override void OnNavigatedTo(NavigationEventArgs e)
{
// the page is now the current page of the application. We can finalized the loading of the data to display
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
// our page will be removed from the screen, we release what has to be released
}
}
Bekräfta navigeringsbegäran med OnNavigatingFrom
private bool navigateFlag = false;
protected async override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
base.OnNavigatingFrom(e);
if (!navigateFlag)
{
e.Cancel = true;
var dialog = new MessageDialog("Navigate away?", Confir,);
dialog.Commands.Add(new UICommand("Yes", null, 0));
dialog.Commands.Add(new UICommand("No", null, 1);
dialog.CancelCommandIndex = 1;
dialog.DefaultCommandIndex = 0;
var result = await dialog.ShowAsync();
if (Convert.ToInt16(result.Id) != 1)
{
navigateFlag= true;
this.Frame.Navigate(e.SourcePageType);
}
}
}
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow