6

我开发了一个 WPF 应用程序。我有一个从 Window 继承的主窗口,一个 tabcontrol 和这个 tabcontrol 中的许多从 UserControl 继承的 tabitems。每个 tabitem 都有自己的 cs 文件,我用 C# 编写所有业务逻辑,还有一个 XAML 文件,用于完成 UI 的开发。我还有一个带有数据库的 SQL Server,我通过 LINQ 连接到该数据库。

所以我必须写下我选择在我的应用程序中使用的控制器。这是我感到困惑的地方,因为我没有手动编写控制器,而且我认为 ViewModel 在我的情况下会像控制器一样。这可能是正确的吗?ViewModel 可以像控制器一样工作吗?

4

2 回答 2

8

控制器可以向其关联的视图发送命令以更改视图对模型的表示(例如,通过滚动文档)。它还可以向模型发送命令以更新模型的状态(例如,编辑文档)。Model_View_Controller

viewmodel是“视图的模型”,这意味着它是视图的抽象,也用于在视图和作为视图数据绑定目标的模型之间进行调解。它可以被看作是控制器(在 MVC 模式中)的一个特殊方面,它充当将模型信息更改为视图信息并将命令从视图传递到模型的转换器。视图模型公开了公共属性、命令和抽象。Model_View_ViewModel

如果您想驱动许多相似的 View-ViewModel 对(用例),则需要引入MVVMC (MVC + MVVM)。然后,您可以引入控制器。Model_View_ViewModel_Controller

于 2013-06-19T05:56:16.380 回答
4

在最简单的情况下,让 ViewModel 实现“控制器”逻辑。对于大型应用程序,我有时会使用使用单独控制器类的 MVMC 模式。博客圈最近有很多支持在 MVVM 上使用 MVVMC。

MVVM 已死,MVVMC 万岁!
MVMMC - MVVM 增长一个控制器

于 2013-05-08T16:58:29.850 回答