我有一个 mvvmcross xamarin 项目,我试图找出在特定情况下跨屏幕发送数据的最佳方法。
我的第一个屏幕是一个搜索过滤器,它包含用户选择过滤结果的各种条件。第二个屏幕是结果列表屏幕。
我已经看到了许多解决这个问题的选择:
1) 使用 Init 方法 - 我在这里遇到的问题是,当我传递自定义对象时,值始终为空/默认值。如果我传递一个字符串,它工作正常。如果我可以传递自定义对象,我将传递 EntityFilter 或作为结果的实体列表。我确实必须在过滤器页面上查询实体,因为他们在一个过滤器上选择的内容会根据剩余的实体影响其他人。我已将以下内容添加到 AssemblyInfo.cs 中,但它仍然无法正常工作。
[assembly: InternalsVisibleTo("Cirrious.MvvmCross")]
2) 使用消息。这里的问题是当过滤器改变时没有创建结果页面,所以消息传递不起作用。
3)使用内存对象。我创建了一个结果服务,它只包含实体列表的公共属性。它在 IoC 中注册为惰性单例(所有服务也是如此)。这种方法有效,是我目前的解决方案。但它并不“感觉”正确。感觉就像我做错了什么或违反了最佳实践。这是应该做的吗?