Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVVM跨多个页面交叉编辑复杂对象并保存数据_Mvvm_Mvvmcross - Fatal编程技术网

MVVM跨多个页面交叉编辑复杂对象并保存数据

MVVM跨多个页面交叉编辑复杂对象并保存数据,mvvm,mvvmcross,Mvvm,Mvvmcross,一般来说,我对mvvmcross和mvvm模型相当陌生。几周来,我一直在尝试创建自己的跨平台应用程序,我一直在坚持什么才是好的做法。我有两个主要的问题,我希望有人能帮我解决 问题1: 我有一个复杂的模型,其中包含许多属性、子项以及这些子项中的子项。此外,许多值会根据其他值自动计算。 我在任何地方都实现了MvxNavigatingObject,所有值在发生更改时都会得到正确的通知。到目前为止还不错 现在我想让人们使用该应用程序来更改我模型中的值。但是因为有这么多的输入字段,我想把数据分成几页。当然

一般来说,我对mvvmcross和mvvm模型相当陌生。几周来,我一直在尝试创建自己的跨平台应用程序,我一直在坚持什么才是好的做法。我有两个主要的问题,我希望有人能帮我解决

问题1: 我有一个复杂的模型,其中包含许多属性、子项以及这些子项中的子项。此外,许多值会根据其他值自动计算。 我在任何地方都实现了MvxNavigatingObject,所有值在发生更改时都会得到正确的通知。到目前为止还不错

现在我想让人们使用该应用程序来更改我模型中的值。但是因为有这么多的输入字段,我想把数据分成几页。当然,每个页面都有自己的视图模型。这意味着每次页面更改时都要重新加载我的大对象。 为了解决这个问题,我创建了一个DataHolderService,它作为一个单例加载到所有视图模型上。然后我让我的viewmodels更改DataHolderService中的数据,并且我永远不必重新加载数据

但我想知道,这是一个好的做法吗?这样做感觉有点奇怪。还有其他的可能性吗?喜欢在多个页面上使用相同的viewmodel吗

问题2

我想将数据保存到数据库中,以便在会话之间保持数据。我有一个SQLite数据库,可以使用按钮保存数据。但如果用户忘记使用“保存”按钮,应用程序会被放在后台,直到系统最终将其关闭,数据就会丢失。
因此,我添加了一个计时器,它定期将数据保存到数据库中。但我能理解这不是很好的做法。不需要用户按下保存按钮,将数据保存回数据库的好方法是什么?是否有一个事件/函数会在处理视图模型之前触发?

然而,要准确理解您试图实现的目标有点困难

  • 使用问题列表不是比将其分散在多页上更好吗

  • 我们最近创建了一个类似的页面。如果您的数据显示为复选框/单选按钮/微调器等,我们会在值更改时立即保存它们。 对于保存文本,我们使用1秒计时器,当用户开始键入时开始计时,如果用户在该时间内更改文本,则重置计时器,否则保存


  • 谢谢你的回复。我可以把所有的东西都放在一页纸上。但我认为,如果您能够导航到多个页面(使用pivot或viewpager)将不同的数据分类到不同的页面中,将改善用户体验。但是,由于所有数据都会相互影响,所以我每次都需要重新加载所有数据,或者像我现在所做的那样,向singleton服务注入数据。保存数据的想法听起来很完美。这样可以立即保存所有内容,并防止在快速键入文本时出现问题。