xamarin - 如何将 CollectionData 变量从详细信息页面传递到 Xamarin 应用程序中的其他页面?
问题描述
我正在使用 Xamarin.Forms 选项卡模板为历史社会创建一个基本应用程序。
我正在使用 CollectionData 页面 (ItemsPage) 链接到 ItemDetailPage。
然后我想从 ItemDetailPage 链接到另一个保留 ItemID 的页面(MapPage),以便它将从 DataStore 加载正确的变量以获取地图位置。所以基本上我想做:
ItemsPage > ItemDetailPage > MapPage
如何在 ItemDetailPage 和 MapPage 之间移动 ItemID?
我已将数据加载到我的 MapViewPage ViewModels 页面中:
using Paston_Design_2.Models;
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace Paston_Design_2.ViewModels
{
[QueryProperty(nameof(ItemId), nameof(ItemId))]
public class MapViewModel : BaseViewModel
{
private string itemId;
private string text;
public string Id { get; set; }
public string Text
{
get => text;
set => SetProperty(ref text, value);
}
public string ItemId
{
get
{
return itemId;
}
set
{
itemId = value;
LoadItemId(value);
}
}
public async void LoadItemId(string itemId)
{
try
{
var item = await DataStore.GetItemAsync(itemId);
Id = item.Id;
Text = item.Text;
}
catch (Exception)
{
Debug.WriteLine("Failed to Load Item");
}
}
}
}
在我的 ItemDetailPage 的代码隐藏中,添加了此链接:
namespace Paston_Design_2.Views
{
public partial class ItemDetailPage : ContentPage
{
public ItemDetailPage()
{
InitializeComponent();
BindingContext = new ItemDetailViewModel();
}
private async void Map_Clicked(object sender, EventArgs e)
{
await Shell.Current.GoToAsync($"{nameof(Map)}?{nameof(MapViewModel.ItemId)}");
}
}
}
但是,如果我将 ItemID 添加到 await 命令的末尾(我想这样做以保留 Shell Stack 和导航链接),则无法识别:
await Shell.Current.GoToAsync($"{nameof(Map)}?{nameof(MapViewModel.ItemId)}={itemId}");
我意识到我可能错过了明显的,但我找不到任何专门解决这个问题的教程(可能是由于我对 Xamarin 术语的缺乏经验),任何帮助将不胜感激,即使它是一个链接列出它的资源。
恼人的是,我注意到如果我弄乱了 ItemDetailPage 上的代码(例如复制其中一个图像按钮),它可以在 VM 上运行!但随后它停止进行下一次编译。
只需添加一些图像来阐明我想要实现的目标:
解决方案
推荐阅读
- powerbi - Power BI - 从 1..* 关联中获取第一行和第二行
- python - 对于每个 Pandas 组,根据与另一个数据框匹配的列删除行
- file - 在 svelte 中过滤文件
- bioinformatics - Snakemake 工作流程卡住 - 等待在 SLURM 集群上执行的作业
- flutter - 验证时 Flutter TextForm 字段填充
- performance - 为什么安装库时 conda 比 pip 慢很多?
- json - 为什么 VS Code 允许 .vscode 内的 JSON 文件中的注释,但其他地方却不允许?
- r - 安装从 CRAN 中删除的软件包
- file-upload - 上传 1GB 文件时出现 JMeter SocketException
- node.js - Nodejs,如何将引用多个本地项目的打字稿项目部署到Heroku?