テンプレート 10を使用する場合、次のように、INavigable
メソッドOnNavigatingFromAsync
をオーバーライドして true に設定することで、ページの ViewModel がページからの移動をキャンセルする機会が与えられます。args.Cancel
public override Task OnNavigatingFromAsync(NavigatingEventArgs args)
{
// some logic to determine if navigation should be canceled...
args.Cancel = true;
return Task.CompletedTask;
}
これは問題なく動作しますが、ユーザーにモーダル ダイアログを表示したい場合は (ナビゲーションがキャンセルされる理由を説明します)、メソッドを次のように変更します。
public async override Task OnNavigatingFromAsync(NavigatingEventArgs args)
{
args.Cancel = true;
ContentDialog dlg = new ContentDialog()
{
Title = "Bad",
Content = "no no no!",
PrimaryButtonText = "OK",
SecondaryButtonText = "NO"
};
await dlg.ShowAsync();
}
これによりダイアログが表示されますが、ナビゲーションはキャンセルされません。T10がargs.Cancel = true;
設定を無視しているようです。
ここで何か間違ったことをしていますか?ダイアログを表示して、ナビゲーションを禁止したいだけです..