ナビゲーションは,以下のようにページをスタックに積み上げている(Push).

戻るときはそのスタックを上から1つずつ取り除く(Pop)していく.
これがナビゲーションスタック.
ナビゲーションを使うには,App.xaml.csでMainPageにNavigationPageのインスタンスを渡す.これがナビゲーションスタックになる.NavigationPageをインスタンス化するときにページのインスタンスを渡してあり,これがアプリ起動時に表示されるルートページになる.
public App() { InitializeComponent(); MainPage = new NavigationPage(new MainPage()); }
これでNavigationを使用する準備が完了しました.
各ページのコードビハインドでNavigation.PushAsyncメソッドで指定のページに遷移します.つまり,上の図のようにナビゲーションスタックにページが一枚積まれます.
CommandとCommandParameterを使ったナビゲーション
ボタンが押されたときにCommandとCommandParameterを使って指定したページに遷移する方法は以下のとおりです.
public ICommand NavigationCommand { get; }
public MainPage()
{
InitializeComponent();
NavigationCommand = new Command<string>(async (pageName) => await NavigateAsync(pageName));
this.BindingContext = this;
}
private async Task NavigateAsync(string pageName)
{
switch (pageName)
{
case "ImageCirclePage":
await Application.Current.MainPage.Navigation.PushAsync(new ImageCirclePage());
break;
}
}