我正在使用shell,我希望所有页面上都有标签。所以我遵循shell导航的标准方式,但问题是我不知道如何在导航中传递对象。await Shell.Current.GoToAsync(page.ToString());
为导航执行此操作Routing.RegisterRoute("TesProject.Views.DetailView", typeof(DetailView));
这样注册路由
我想将一个完整的对象从列表视图传递到详细视图。我该怎么做?
Xamarin.Forms Shell Navigation Hierarchy with parameters
我看到了这个,但我认为这在我的情况下不起作用,因为我不能像这样传递一个完整的模型对象。
4条答案
按热度按时间zz2j4svz1#
我写了一个小例子供大家参考。
在发送类中,可以传递
$"AferPage?param={param}"
之类的参数。下面是发送代码:
下面是接收类代码(实现IQueryAttributable接口):
6ovsh4lw2#
使用Newtonsoft.Json,您可以:
在列表视图中:
在详细信息视图页中:
添加查询属性:
再次转换为模型:
此视频中显示了一种解决方案:https://www.youtube.com/watch?v=YwnEpiJd0I8
pwuypxnk3#
可以将对象作为字典传递。
例如,如果这是您要发送的数据对象:
在页面的视图模型上设置查询属性:
假设您的页面构造函数如下所示,它将自动设置上下文的值:
然后,当您巡览至页面时,将对象传入字典中:
现在您可以访问绑定中的对象:
注意使用
nameof
来避免硬编码字符串。lrl1mhuk4#
如果json比较复杂,可以使用存储的首选项,例如:
在检索数据的详细信息页上,可以使用以下代码: