Zoeken…
Invoering
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);
}
Navigeer naar een nieuwste pagina
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
}
}
Navigatieaanvraag bevestigen met 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);
}
}
}