Prismを使ってページ遷移する
久しぶりにXamarin触ってみようと思ったら、どうやって書くのか完全に忘れてた。
自分の記憶を手繰り寄せるのと、今後も見返すためにメモを残そうと思う。
今回は、例えばMainPage.xamlにボタンを追加してページ遷移する。
MainPage.xamlからSingleDigitAdd.xamlに遷移する。
目次
ViewとViewModelsを用意する。
SingleDigitAdd.xamlとSingleDigitAddViewModel.csを用意する。
App.xaml.csのRegisterTypesを編集
RegisterTypesというメソッドがあるので、そこにViewとViewModelの関連付けをする。7行目を追加しています。
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IAppInfo, AppInfoImplementation>();
containerRegistry.RegisterForNavigation<NavigationPage>();
containerRegistry.RegisterForNavigation<MainPage, MainPageViewModel>();
containerRegistry.RegisterForNavigation<SingleDigitAdd, SingleDigitAddViewModel>();
}
MainPage.xamlにボタン追加
<Button Text="たしざん"
Command="{Binding NavigateSingleDigitAddCommand}"
NavigateSingleDigitAddCommandというコマンドをバインドしたところがミソ
MainPageViewModel.csに遷移ロジックを記述
- メンバーにDelegateCommandを用意する
- コンストラクターで DelegateCommand に対応する遷移ロジックを登録。今回はPageSingleDigitAddShowというメソッド。
- 遷移ロジックの中身を記述。
NavigationService.NavigateAsync("SingleDigitAdd");
MainPageViewModel.cs
using Prism.Commands;
using Prism.Mvvm;
using Prism.Navigation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ArithmeticStarter.Views;
namespace ArithmeticStarter.ViewModels
{
public class MainPageViewModel : ViewModelBase
{
public DelegateCommand NavigateSingleDigitAddCommand { get; set; }
public MainPageViewModel(INavigationService navigationService)
: base(navigationService)
{
Title = "トップページ";
NavigateSingleDigitAddCommand = new DelegateCommand(PageSingleDigitAddShow);
}
private void PageSingleDigitAddShow()
{
NavigationService.NavigateAsync(nameof(SingleDigitAdd));
}
}
}
ディスカッション
コメント一覧
まだ、コメントがありません