在页面之间传递数据 Xamarin Shell 导航
Passing data between pages Xamarin Shell navigation
我有一个 Xamarin 表单应用程序,其中的表单分为多个页面,我想将对象数据传递到下一页或上一页。我正在使用 Xamarin Shell 进行导航。我可以使用什么方法或设置来实现此目的?
我知道的选项以及我认为的问题:
- JSON 字符串对象并将其作为参数传递。
这似乎不正确,因为数据正在来回转换。
- 将对象的每个 属性 作为单独的参数传递。
冗长冗长,具有许多属性且无法灵活更改。
- 将数据存储到 SQLite 数据库。
我不想在 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 来接收导航数据。
另外,另一种方法是在你的应用中创建一个全局变量,你可以在你的应用中访问这个变量。
例如:
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);
我有一个 Xamarin 表单应用程序,其中的表单分为多个页面,我想将对象数据传递到下一页或上一页。我正在使用 Xamarin Shell 进行导航。我可以使用什么方法或设置来实现此目的?
我知道的选项以及我认为的问题:
- JSON 字符串对象并将其作为参数传递。
这似乎不正确,因为数据正在来回转换。
- 将对象的每个 属性 作为单独的参数传递。
冗长冗长,具有许多属性且无法灵活更改。
- 将数据存储到 SQLite 数据库。
我不想在 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 来接收导航数据。
另外,另一种方法是在你的应用中创建一个全局变量,你可以在你的应用中访问这个变量。
例如:
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);