【问题标题】:Cancel Navigation in UWP Prism App在 UWP Prism App 中取消导航
【发布时间】:2017-07-29 06:54:09
【问题描述】:

使用 Prism UWP Hamburger 示例作为应用程序的基础。 ViewModel 通过继承 Prism.Windows.Mvvm.ViewModelBase 从 Prism.Windows.Navigation.INavigationAware 实现。在主外壳中是一个拆分视图,其中包含一个带有联系人、关于、设置等按钮的选项卡。但是,如果用户从拆分视图中选择了“关于”之类的内容,但会显示联系人页面并且有未保存的脏数据,我想询问用户是否希望丢弃任何未保存的数据,如果用户不希望丢弃任何未保存的数据,则取消导航事件。 UWP 似乎没有 WPF 中可用的任何导航便利界面。有什么想法吗?

【问题讨论】:

    标签: navigation uwp prism


    【解决方案1】:

    我自己尚未对此进行测试,但在示例中似乎有一个测试用例试图通过使用 NavigatingFromEventArgs 并将属性 Cancel 设置为 true 来取消导航(导航离开页面)!

        public override void OnNavigatingFrom(NavigatingFromEventArgs e, Dictionary<string, object> viewModelState, bool suspending)
        {
            e.Cancel = _isNavigationDisabled;
    
            base.OnNavigatingFrom(e, viewModelState, suspending);
        }
    

    示例代码在这里 https://github.com/PrismLibrary/Prism/blob/d2874b5b26baf2590a2b25f780a84f4789c33f4c/Sandbox/Windows10/HelloWorld/HelloWorld.Unity/ViewModels/MainPageViewModel.cs#L44

    【讨论】:

    • 是的,已经尝试过了,有 2 个问题。首先不能让这个异步返回一个任务,因为这会破坏 OnNavigatingFrom 覆盖,但是询问用户是否想要丢失未保存数据的对话框只有一个 ShowAsync 方法。其次,即使我删除对话框并取消内容视图模型中的导航,事件已经在启动导航事件的菜单视图模型中运行完成。
    • 抱歉不知道如何处理,除了 .Result 异步方法(知道这不是最佳方法)
    • 结果适用于细节页面视图模型,但导航菜单仍然忽略这一点,并且与细节视图模型不同步。布赖恩?任何人?这已经持续了将近 2 周。已经在 Github 上询问过,但被关闭并返回给 SO。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    相关资源
    最近更新 更多