Xamarin Shell:在参数中传递大量数据

问题描述

在我的Xamarin项目中有两个页面PageA选择一组记录,PageB应该接收选定的数据。

据我所知,在Xamarin Shell中将参数传递到另一个页面,我应该使用参数,就像在Web应用程序中使用它们一样。

Shell.Current.GoToAsync($"{pageBUri}?param1=value1&param2=value2");

就我在PageA上的情况而言,显示了许多记录(约百甚至更多)。用户可以点击“全选”以将选择的内容传递给PageB

我的担忧:如果我从这些选定的记录中获得GUIDs并通过参数将这些指导作为大量数据传递,那么在不同的实际设备上工作是否是一种可靠的解决方案?

对于Web应用程序,取决于浏览器,带有参数的uri大小是有限制的。我认为Xamarin Shell也有这样的限制。可能没有记录(我没有找到)。

我的问题:通过Shell参数传递一大段文字是个好主意,还是最好使用诸如全局单例剪贴板对象之类的东西,将大量数据与guid关联,放入此cliboard中,并且仅将此Guid传递给PageB

假设我已声明一个接口IGlobalClipboard,并已将其实现注册为具有IoC容器的单例。

然后使用以下方法

PageA视图模型:

IGlobalClipboard clipboard = IoC.GetService<IGlobalClipboard>();
Guid key = Guid.NewGuid();
clipboard.put(key,largeDataBlock);

PageB视图模型:

[QueryProperty(nameof(DataBlockKey),nameof(DataBlockKey))]
...

public string DataBlockKey { get; set; }

...

IGlobalClipboard clipboard = IoC.GetService<IGlobalClipboard>();
Guid key = Guid.ParseGuid(DataBlockKey);
var largeDataBlock = clipboard.get(key);
clipboard.remove(key);

...

您认为哪种方法更好?使用查询参数,即使有大量数据,还是使用如上所述的全局剪贴板对象?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)