首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mvvm中重置视图模型

如何在mvvm中重置视图模型
EN

Stack Overflow用户
提问于 2014-08-04 13:56:30
回答 3查看 6.7K关注 0票数 3

当用户单击视图上的新按钮时,如何重置视图模型,因为它是数据文本?

例如:

如果我有一个视图NewCustomer,并且在保存时,数据会保存到DB中,并显示新创建的帐号。但是当用户单击屏幕上的New按钮时,我希望重新初始化视图(viewmodel)。或者如果用户在屏幕上单击“取消”以清除所有更改。

我怎样才能做到这一点?我使用棱镜5.0和统一作为我的容器。

如果我使用IRegionMemberLifetime,我可以在离开时清除视图模型数据,然后再导航到视图(在导航之前,在单击New按钮时将KeepAlive设置为false )。但我希望不用导航就能清除表单。这能办到吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-04 14:08:10

您可以有一个屏幕/工作区视图模型,以及另一个包装数据的ViewModel。

所以有两个类:CarScreenViewModelCarViewModel

CarScreenViewModel将有一个属性,比如CurrentCar,它反映了当前屏幕中选择的内容。然后,单击Create按钮时,只需设置:

代码语言:javascript
复制
 CurrentCar = new CarViewModel();

重置部分加载的数据只会导致难以再现的行为。最好从一个新的实例开始。

票数 4
EN

Stack Overflow用户

发布于 2014-08-04 14:05:05

您的标准方法如下所示

ViewModels

CustomersContainerViewModel,包含

一个CustomerViewModel和ICommands的集合

代码语言:javascript
复制
CreateNewCustomer
DeleteExistingCustomer
UpdateExistingCustomer

您的视图将包含CustomersContainerView,它将在所需的UI元素中包含一个客户对象集合--一个创建新客户的按钮(该按钮将启动一个新的屏幕,其中包含它也可以包含的取消(它将关闭表单)、一个要删除的按钮(也可以是一个ContextMenu)、一个要更新的按钮(也可以是一个ContextMenu),该按钮将启动一个包含来自DB的详细信息的客户表单。

希望这有点道理..。如果您有上述任何问题,请告诉我。

更新-忘了添加。NewCustomer命令将向您的CustomerCollection中添加一个新的Customer对象,该对象应该打开一个NewCustomer表单(或您选择的任何内容),以便用户输入客户详细信息。“取消/删除”将只从集合中删除该记录。此外,Delete还将更新DB。

票数 1
EN

Stack Overflow用户

发布于 2022-01-27 17:34:09

在我的情况下

yourViewName.variableName.postValue("")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25120419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档