在我们的WPF应用程序中,我们希望使用基本的MVVM模式.我们正在讨论它,并且出现了关于ViewModel/View关系和验证的一些不确定性.你会说以下是对它的一个很好的理解吗?
每个View都有一个且只有一个ViewModel ,ViewModel的目的是为View提供数据并处理其所有View的事件和命令.(是否存在一个ViewModel为两个视图提供服务的实例,例如标准XAML输入表单视图和CSV导入,它提供与表单相同的数据,因此需要进行相同的验证?)
验证仅由ViewModel处理,例如视图抛出ChangedFocus或SaveButtonPressed事件等.
模型非常愚蠢,只是基于数据库中的一个或多个表的数据结构,但模型本身并不处理验证.甚至ViewModel也构建并保存对象的ObservableCollection,例如"Customers"而不是Model本身.
任何反馈意见.
每个View都有一个且只有一个ViewModel
我认为如果你对模式的跟随严格,那么每个视图将只有一个ViewModel.我们的应用程序中有一个案例,其中需求在流中更改,并且最简单的方法是让View引用两个不同的ViewModel.根据您实施模式的方式,这可能是也可能是不可能的.
是否存在一个ViewModel为两个视图提供服务的实例
是的,这是该模式的优势之一.
验证仅由ViewModel处理
不必要.我们选择让我们的模型类实现IDataErrorInfo并自己进行验证.这确保了无论使用Model类的哪个位置,验证都是相同的.如果验证需要改变它只在一个地方.
模特非常愚蠢
它只是像你想要的那样愚蠢.如果您愿意,可以在模型中包含验证和业务规则.