Zoeken…


Invoering

Zodra een applicatie meerdere pagina's / schermen heeft, is een manier van navigeren er tussen nodig. Bij UWP-toepassingen wordt de navigatie afgehandeld door de [Frame] [1] -besturing. Het toont exemplaren van [Page] [2], ondersteunt de navigatie naar nieuwe pagina's en houdt een geschiedenis bij voor achteruit en vooruit navigeren [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

Maak een frame

Een frame wordt gemaakt zoals alle andere besturingselementen:

<Frame x:Name="contentRoot"
       Navigated="OnNavigated"
       Navigating="OnNavigating" />

De genavigeerde / navigatiegebeurtenissen kunnen vervolgens worden onderschept om de navigatie te annuleren of de terugknop te tonen / verbergen.

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

Om naar een nieuwste pagina te navigeren, kunnen we de methode Navigate () uit het frame gebruiken.

contentRoot.Navigate(typeof(MyPage), parameter);

waarbij contentRoot de Frame- instantie is en MyPage een besturingselement dat van de pagina wordt geërfd

In MyPage wordt de methode OnNavigatedTo () aangeroepen zodra de navigatie is voltooid (dwz wanneer de gebruiker de pagina opent ), waardoor we het laden van de paginagegevens kunnen activeren of voltooien. De methode OnNavigatedFrom () wordt aangeroepen wanneer we de pagina verlaten, zodat we kunnen vrijgeven wat moet worden vrijgegeven.

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
    }
}
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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow