Xaml 如何使用INavigationAware后退按钮将参数传递到上一页

Xaml 如何使用INavigationAware后退按钮将参数传递到上一页,xaml,mvvm,xamarin.forms,prism,viewmodel,Xaml,Mvvm,Xamarin.forms,Prism,Viewmodel,我在使用INavigationAware代码时遇到问题。我有3页。例如,我把它命名为pageA、pageB和pageC。PageA是一个列表视图,我将使用OnItemSelected将参数传递给pageB PageA视图模型 在pageB中,我将使用OnNavigatedTo获取参数 PageB视图模型 从pageB,我将使用相同的方式将参数发送到pageC。但是现在,我在将参数传递回pageB时遇到了问题。因为我使用的是左上角的InAviation Back按钮,所以我不知道如何将参数传递回p

我在使用INavigationAware代码时遇到问题。我有3页。例如,我把它命名为pageA、pageB和pageC。PageA是一个列表视图,我将使用OnItemSelected将参数传递给pageB

PageA视图模型

在pageB中,我将使用OnNavigatedTo获取参数

PageB视图模型

从pageB,我将使用相同的方式将参数发送到pageC。但是现在,我在将参数传递回pageB时遇到了问题。因为我使用的是左上角的InAviation Back按钮,所以我不知道如何将参数传递回pageB。问题是我需要将参数主键传递给所有页面,以便进行选择和更新。请帮帮我。我不确定如何使用OnNavigatedFrom传递参数

PageC视图模型


提前谢谢。

我不想说显而易见的事情,但是您是否尝试过在OnNavigatedFrom方法中添加参数集合

    public void OnNavigatedFrom(NavigationParameters parameters)
    {
        parameters.Add("test", "testValue");   
    }

我不想说显而易见的事情,但是您是否尝试过在OnNavigatedFrom方法中添加参数集合

    public void OnNavigatedFrom(NavigationParameters parameters)
    {
        parameters.Add("test", "testValue");   
    }

我使用Xamarin.Essentials SecureStorage来实现此结果,只需使用密钥将您的值插入SecureStorage,然后在需要时再次获取:

导航到PageB时保存参数:

SecureStorage.SetAsync("current_id", YourParameterValue);
当在OnAppearing事件中返回到BageB时,将覆盖从SecureStorage获取值的事件:

protected override void OnAppearing()
        {

            base.OnAppearing();
            var CurrentId = long.Parse(  SecureStorage.GetAsync("current_id").Result);
            this.BindingContext = new PageBViewModel(CurrentId) ;
        }
假设你的身份证是长的


注意:我不确定这是否是一种干净的方法,但它确实有效。

我使用Xamarin.Essentials SecureStorage来实现此结果,只需使用密钥将您的值插入SecureStorage,然后在需要时再次获取:

导航到PageB时保存参数:

SecureStorage.SetAsync("current_id", YourParameterValue);
当在OnAppearing事件中返回到BageB时,将覆盖从SecureStorage获取值的事件:

protected override void OnAppearing()
        {

            base.OnAppearing();
            var CurrentId = long.Parse(  SecureStorage.GetAsync("current_id").Result);
            this.BindingContext = new PageBViewModel(CurrentId) ;
        }
假设你的身份证是长的


注意:我不确定这是一种干净的方法,但它确实有效。

您考虑过使用服务吗?如果所有页面都必须知道当前项目,那么将其全局可用可能是一种替代方法,而不是一直将其传递。如何使其全局可用?对不起,我完全是个新手。通过一个可供所有视图模型使用的服务,您考虑过使用该服务吗?如果所有页面都必须知道当前项目,那么将其全局可用可能是一种替代方法,而不是一直将其传递。如何使其全局可用?抱歉,我完全是一个新手。通过一个可供所有视图模型使用的服务,调用GoBackAsync时不会调用NavigatedFrom,这仅在iOSOnNavigatedFrom上发生。调用GoBackAsync时不会调用NavigatedFrom,这仅在iOS上发生