Xamarin.Formsのナビゲーション
ナビゲーションは,以下のようにページをスタックに積み上げている(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; } }