首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >视图模型/视图关系和验证

视图模型/视图关系和验证
EN

Stack Overflow用户
提问于 2009-04-07 11:20:20
回答 3查看 2.4K关注 0票数 6

在我们的WPF应用程序中,我们希望使用基本的MVVM模式。我们正在讨论它,出现了一些关于ViewModel/View关系和验证的不确定性。你会说以下是一个很好的理解吗?

  • Every视图只有一个ViewModel,视图模型的目的是为它的视图提供数据并处理它的所有事件和命令。(是否存在这样的情况:一个validation?)
  • Validation服务于两个视图,例如一个标准的XAML输入表单视图和一个CSV,后者提供与表单相同的数据,因此需要拥有相同的etc.
  • The,仅在视图抛出ChangedFocus或SaveButtonPressed事件时由ViewModel处理,etc.
  • The Model是相当愚蠢的,它只是基于数据库中的一个或多个表的数据结构,但是模型本身不处理验证。甚至是ViewModel建立并保存了对象的ObservableCollection。“客户”而不是模型本身。

任何反馈都很感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-04-07 15:06:56

每个视图都有一个并且只有一个ViewModel

我认为,如果您严格遵循模式,那么每个视图都只有一个ViewModel。在我们的应用程序中,需求在流中间发生了变化,让视图引用成为两种不同的ViewModels是最容易的。根据您实现模式的方式,这可能是可能的,也可能是不可能的。

有一个ViewModel服务两个视图的实例吗?

是的,这是这种模式的优点之一。

验证仅由ViewModel处理。

不一定。我们选择让我们的模型类实现IDataErrorInfo并自己进行验证。这确保了无论在哪里使用Model类,验证都是相同的。如果验证需要更改,则只需在一个地方进行验证。

这个模型太蠢了

它只会像你想要的那样愚蠢。如果愿意,可以在模型中包括验证和业务规则。

票数 6
EN

Stack Overflow用户

发布于 2009-04-08 05:43:17

以上各点,我是同意的。只有一个注释:您的视图模型可以在内部使用另一个视图模型。使用这种方法,您可以将视图划分到具有不同视图模型的两个区域。只需使用ContentPresenter,将其绑定到所需的视图模型属性(获取所需的视图模型),并使用DataTemplate将所需的视图与视图模型关联起来。

票数 3
EN

Stack Overflow用户

发布于 2009-04-07 11:23:14

有一个ViewModel服务两个视图的实例吗?

剥皮的应用程序可能会利用这一能力。

--模型相当愚蠢,但模型本身不处理验证

这个模型可以像你喜欢的那样聪明。它可以包括“验证”,以确保完整性,但验证不会包括在UI中出现的消息。

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

https://stackoverflow.com/questions/725171

复制
相关文章

相似问题

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