Suche…
Einführung
Rahmen erstellen
Ein Frame wird wie alle anderen Steuerelemente erstellt:
<Frame x:Name="contentRoot"
Navigated="OnNavigated"
Navigating="OnNavigating" />
Die navigierten / navigierenden Ereignisse können abgefangen werden, um die Navigation abzubrechen oder die Zurück-Schaltfläche anzuzeigen / auszublenden.
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);
}
Navigieren Sie zu einer neuesten Seite
Um zu einer neuesten Seite zu navigieren, können Sie die Navigate () -Methode aus dem Frame verwenden.
contentRoot.Navigate(typeof(MyPage), parameter);
Dabei ist contentRoot
die Frame- Instanz und MyPage
ein Steuerelement, das sich von Page erbt
In MyPage
wird die OnNavigatedTo () -Methode aufgerufen, sobald die Navigation abgeschlossen ist (dh wenn der Benutzer die Seite öffnet) , wodurch das Laden der Seitendaten ausgelöst oder abgeschlossen werden kann. Die OnNavigatedFrom () -Methode wird beim Verlassen der Seite aufgerufen, sodass wir freigeben können, was veröffentlicht werden muss.
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
}
}
Navigationsanforderung mit OnNavigatingFrom bestätigen
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);
}
}
}