wpf - 如何在 mvvm 中重置 View 模型

标签 wpf mvvm prism

当用户单击将 View 模型作为数据上下文的 View 上的新按钮时,如何重置我的 View 模型?

例如:

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

我怎样才能实现这个目标?我使用 Prism 5.0 和 Unity 作为容器。

如果我使用 IRegionMemberLifetime,当我导航离开并再次导航到 View 时,我可以清除 View 模型数据(通过在导航离开之前单击“新建”按钮将 KeepAlive 设置为 false)。但我希望无需导航即可清除表单。这可以吗?

最佳答案

您可以有一个 screen/workspaceViewModel 和另一个包装您的数据的 ViewModel。

所以有两个类:CarScreenViewModelCarViewModel

CarScreenViewModel 将有一个属性,例如 CurrentCar,它反射(reflect)当前在屏幕中选择的内容。然后,当单击创建按钮时,您只需设置:

 CurrentCar = new CarViewModel();

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

关于wpf - 如何在 mvvm 中重置 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25120419/

相关文章:

c# - MVVM 将 View 绑定(bind)到可变模型

.net - 多文档应用程序的 MVVM 设计?

c# - 我应该为 OnPropertyChanged 和 BooleanToVisibilityConverter 编写代码吗?

c# - 如何在不使用控件的情况下在 WPF 中打印内容?

c# - "MouseLeftButtonDown"TreeViewItem 中未引发事件,为什么?

wpf - 绑定(bind)已损坏但没有错误

c# - 如何在 'await' 引发 EventHandler 事件

c# - 在 wpf 中绑定(bind) IEnumerable<IGrouping<string,BaseDto>> 类型对象

xamarin.forms - Prism Xamarin GetCurrentPage 是否可能

c# - MVVM 分离程序集 Visual Studio : What should I choose as the project types?