问题描述
在我的Xamarin项目中有两个页面。 PageA
选择一组记录,PageB
应该接收选定的数据。
据我所知,在Xamarin Shell中将参数传递到另一个页面,我应该使用参数,就像在Web应用程序中使用它们一样。
Shell.Current.GoToAsync($"{pageBUri}?param1=value1¶m2=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 (将#修改为@)