我有一个Xamarin.Form应用程序,使用Prism进行MVVM,导航和DI。 在页面中,我从WS下载了一个数据对象,我需要将其与沿途下载的其他数据对象(以及状态,标志,这些标志实际上不适合存储在Settings / Preferences中)一起维护,以供其他用户使用。我的应用程序页面,那么如何传递它?
我可以在单个“ GlobalData”对象中收集所有必须在各个页面中使用的所有数据,但是以下每种解决方案的优缺点是什么?
我排除了:
我尝试过:
1从SQLite和LiteDB存储和检索
2从MonkeyCache和Akavache中存储和检索
3存储和检索全局App对象
4在每页中用Prism DI注入对象
所有解决方案都适用于我的测试,从最容易实现的角度出发,我将依次使用3、4、2、1。 到目前为止,使用全球通用的App对象是最简单的,我知道优点,但是缺点是什么? 我只想了解每种方法是否存在根本上的错误。
谢谢!
答案 0 :(得分:1)
您错过了最明显的选项-在导航过程中传递数据。
INavigationService.NavigateAsync
采用类型INavigationParameters
的参数,该参数可以存储任意数据。然后,相同的实例将显示在导航到的视图模型中(如果它实现了INavigationAware
)。
答案 1 :(得分:0)
我发现维护单例模型对访问视图模型很有用。需要小心管理这些数据。当不相关时,我会清除数据。由于我的工作流程是线性的,因此在工作流程的关键点填充它。通常,模型仅包含具有初始化和清晰方法的DTO和集合。