【问题标题】:How to show a Modal Dialog and Cancel Navigation in OnNavigatingFromAsync如何在 OnNavigatingFromAsync 中显示模态对话框并取消导航
【发布时间】:2016-02-22 18:28:05
【问题描述】:

使用Template 10 时,您有机会通过覆盖INavigable 方法OnNavigatingFromAsync 并将args.Cancel 设置为true,让页面的ViewModel 取消导航离开页面,如下所示:

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; 的设置。

我在这里做错了吗?我只想显示对话框然后阻止导航..

【问题讨论】:

    标签: c# win-universal-app template10


    【解决方案1】:

    我在 Hamburger Sample 上尝试了您在 Template 10 (1.1.4) 上的 Modal,它运行良好。

    对我来说,我认为您的错误出在“OnNavigatingFromAsync”方法上,看起来它最后缺少“return 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;
            }
    

    【讨论】:

    • 谢谢!这行得通。我想我的错误也是在等待dlg.ShowAsync。在另一次尝试中,我从dlg.ShowAsync().AsTask() 返回了IAwaitable,这也不起作用。我想我不太明白应该返回什么任务,以及为什么返回 CompletedTask 有效......
    • Hrm.. 我想知道这个commit 是否在这里改变了什么? Jerry 现在不是返回Task.CompletedTask,而是awaits。
    猜你喜欢
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2018-04-03
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多