使用Template 10时,您可以通过覆盖INavigable
方法OnNavigatingFromAsync
并设置{{1}来让页面的ViewModel取消导航离开页面如此:
args.Cancel
这很好用,但是如果我想向用户显示模态对话框(解释导航被取消的原因),我会将方法修改为:
public override Task OnNavigatingFromAsync(NavigatingEventArgs args)
{
// some logic to determine if navigation should be canceled...
args.Cancel = true;
return Task.CompletedTask;
}
这将显示对话框,但导航不已取消。就像T10忽略了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();
}
被设置一样。
我在这里做错了吗?我只是想显示对话框然后阻止导航..
答案 0 :(得分:2)
我在Hamburger Sample上尝试了模板10(1.1.4)上的模态,它运行良好。
对我来说,我认为你的错误是关于方法" OnNavigatingFromAsync",它看起来好像缺少"返回Task.CompletedTask"最后。
对我来说,当我点击应用程序中的后退键时,此代码会阻止应用返回:
public override Task OnNavigatingFromAsync(NavigatingEventArgs args)
{
args.Cancel = true;
ContentDialog dlg = new ContentDialog()
{
Title = "Bad",
Content = "no no no!",
PrimaryButtonText = "OK",
SecondaryButtonText = "NO"
};
dlg.ShowAsync();
return Task.CompletedTask;
}