みかづきメモ

学習したことのメモとか、日記とか、備忘録。

Xamarin.Forms + Prism で ViewModel からダイアログを出す

Xamarin.Forms + Prism と言った感じで、 MVVM パターンでやってる際に、
ViewModel から、ダイアログを呼び出したい時があります。

その時のやり方みたいな。


単純に View から呼び出したい場合はこんな感じ。

// MainPage.xaml.cs
await this.DisplayAlert("Hello", "Hello, world!", "OK");

f:id:MikazukiFuyuno:20151207211919p:plain
こう表示されます。

じゃあ ViewModel からは?というと、 Prism の方でいい感じのものを提供してくれています。

Prism/4-PageDialogService.md at master · PrismLibrary/Prism · GitHub

これを使えば呼び出すことが可能です。
こんな感じ。

// MainPageViewModel.cs
private readonly _dialogService;

public MainPageViewModel(IPageDialogService dialogService) 
{
    this._dialogService = dialogService;
}

// ...
// コマンド呼び出しなど
private async void Hoge()
{
    await this._dialogService.DisplayAlert("Hello", "Hello, world!", "OK");
}

痒いところに手が届いている感じがして、すごく便利ですね。