在页面之间传递数据 Xamarin Shell 导航

Passing data between pages Xamarin Shell navigation

我有一个 Xamarin 表单应用程序,其中的表单分为多个页面,我想将对象数据传递到下一页或上一页。我正在使用 Xamarin Shell 进行导航。我可以使用什么方法或设置来实现此目的?

我知道的选项以及我认为的问题:

这似乎不正确,因为数据正在来回转换。

冗长冗长,具有许多属性且无法灵活更改。

我不想在 table 中存储不完整的记录并使用当前的 SQLiteAsyncConnection,我不相信我可以从同一个 class 创建 2 个 table ].

很遗憾,我们现在只能传递简单的数据。并且以后会增加这个功能:https://github.com/xamarin/Xamarin.Forms/issues/6848 You can create multiple QueryPropertyAttribute to access different data: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/shell/navigation#pass-data另一种方法是将对象转换为JSON字符串,如:

var jsonStr = JsonConvert.SerializeObject(模型); 然后导航的时候传过去。

是的,您可以使用查询 属性 属性传递数据。

可以通过为每个查询参数使用 QueryPropertyAttribute 修饰接收 class 来接收导航数据。

更多信息,请查看:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/shell/navigation#process-navigation-data-using-query-property-attributes .

另外,另一种方法是在你的应用中创建一个全局变量,你可以在你的应用中访问这个变量。

例如:

1.create class MyVariables.cs 并为您的模型添加静态变量(例如 MyViewModel ):

public  class MyVariables
{
    public static MyViewModel myViewModel { get; set; } = new MyViewModel { Name = "test1" };
}

MyViewModel.cs

public class MyViewModel
{
    public string Name { get; set; }
}

2.You 可以修改或访问您应用中的变量:

 // modify the variable
 MyVariables.myViewModel.Name = "test2022";

// access the variable
  System.Diagnostics.Debug.WriteLine("the data is: " + MyVariables.myViewModel.Name);