我正在使用 Shell 开发带有选项卡式主页的毛伊岛应用程序。在主选项卡页面之一上有一个用于创建新表单的按钮,该按钮将用户导航到绑定到 CreateFormViewModel 的 CreateFormPage。
CreateFormPage 包含一个复杂的表单,其中包含各种输入字段,例如条目、复选框等。当用户关闭此页面并导航到应用程序内的其他位置时,我想确保如果他们返回表单,他们可以从哪里继续他们停止或开始新的形式。
我的想法:
1。在 ViewModel 中实现自动保存
在视图模型中,我实现了自动保存策略,因此当任何属性发生更改时,它都会保存到缓存中,以便可以从那里加载。
2。使用单例服务进行表单状态管理
创建一个 FormContainerService 注册为具有 FormItemViewModel 属性的单例。当初始化 CreateFormViewModel 时,我可以检查单例 FormContainerService 中 FormItemViewModel 的状态并从那里加载。
3.用ActiveFormItemViewModel封装
在 CreateFormViewModel 内部,将有一个作为 ActiveFormItemViewModel 的视图模型属性,而不是属性,它将保存条目的表单属性,并且该视图模型将被注册为单例。
我想了解一些使用 MVVM 的首选方式是什么?
正如 Jason 在评论中所说,这取决于你。但在我看来,“最简单直接”的方法是像这样使用 DI :
build.Services.AddSingleton<CreateFormPage, CreateFormViewModel>();
在你的
MauiProgram.cs
确保您的
CreateFormViewModel
实现 INotifyPropertyChanged
。
有关 DI 的更多信息:Maui 依赖注入