我对mvvmcross和mvvm模型一般都很新。我已经尝试创建自己的跨平台应用程序几个星期了,我一直坚持做一些好的做法。我有两个主要问题,我希望有人可以帮助我
问题1 : 我有一个复杂的模型,在这些子项中有许多属性,子项和子项。此外,许多值会根据其他值自动计算。 我在任何地方实现了MvxNavigatingObject,并在发生更改时正确通知所有值。到目前为止一切都很好。
现在我想让人们使用该应用来更改模型中的值。但由于输入字段太多,我想将数据分成几页。但是每个页面当然都有它自己的视图模型。这意味着每次页面更改时重新加载我的大对象。 为了解决这个问题,我创建了一个DataHolderService,它在所有视图模型上作为单例加载。然后我让我的viewmodels更改DataHolderService中的数据,我永远不必重新加载数据。
但我想知道,这是一个好习惯吗?这样做感觉有点奇怪。还有其他可能吗?就像在多个页面上使用相同的viewmodel一样?
问题2
我想将数据保存到数据库中,以便在会话之间保持不变。我有一个SQLite数据库,可以使用按钮保存数据。但是如果用户忘记使用保存按钮并且应用程序被放在后台直到系统最终杀死它,那么数据将会丢失。 因此,我添加了一个计时器,它定期将数据保存到数据库中。但我可以理解,这不是一个很好的做法。在没有用户需要按下保存按钮的情况下,将数据保存回数据库的好方法是什么?在放置视图模型之前是否会触发事件/函数?
答案 0 :(得分:0)
然而,有点难以理解你想要达到的目标。
使用问题列表而不是将其分布在多个页面上是不是更好?
我们最近创建了一个类似的页面。如果您的数据显示为复选框/单选按钮/微调器等,我们会在值更改后立即保存它们。 为了保存文本,我们使用1秒计时器,该计时器在用户开始键入时启动,如果用户在该时间内更改文本则重置,否则保存。