【问题标题】:Xamarin Forms using MVVM Light - Remove Navigation pages from stack使用 MVVM Light 的 Xamarin 表单 - 从堆栈中删除导航页面
【发布时间】:2018-02-15 11:31:44
【问题描述】:

我有一个简单的基于 Xamarin 表单的应用程序,它向服务提交应用程序,我想在该服务上清除导航堆栈,以便可以输入新的应用程序。我正在使用 MVVM Light 框架,但内置导航服务没有清除堆栈的方法。

我知道使用 Navigation.RemovePage 的开箱即用 Xamarin 可以做到这一点,但不确定如何在 MVVM Lights 导航服务中实现这一点。

我在 NavigateTo 方法中有以下使用参数作为指标来清除堆栈:

if (parameter == null)
{
    foreach (var pageList in _navigation.Pages)
    {
        //Remove from navigation stack                                   
    }
}   

我希望我可以从这里触发一些东西来清除堆栈以便刷新页面,或者有更好的方法,可能直接来自视图模型?

谢谢

【问题讨论】:

  • 如果你的_navigation字段是Xamarin.Forms.NavigationPage,你可以使用_navigation.PopToRootAsync()
  • 这确实从堆栈中删除了所有内容,但是我的表单仍然显示以前的应用程序数据,就好像它们被缓存了一样?

标签: c# xamarin.forms mvvm-light


【解决方案1】:

如果它对任何人有帮助,使用 MVVMLight,您可以使用:

SimpleIoc.Default.Unregister<ViewModel>();

这会从缓存和所有以前的实例中完全删除视图模型/绑定。

我发现只是从堆栈中弹出,(使用Application.Current.MainPage.Navigation.PopAsync();)并没有清除模型数据,只是导航堆栈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-09
    • 2017-01-16
    • 1970-01-01
    • 2017-12-18
    • 2013-04-21
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多