【问题标题】:What are my controller in my application with a MVVM design pattern使用 MVVM 设计模式的应用程序中的控制器是什么
【发布时间】:2013-05-08 14:43:54
【问题描述】:

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

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

【问题讨论】:

  • 这个比较适合程序员交流。堆栈溢出更多是针对代码中的特定编程问题。

标签: c# wpf design-patterns mvvm controller


【解决方案1】:

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

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

MVVMC(MVC + MVVM)的引入在您想要驱动许多相似的 View-ViewModel 对(用例)的情况下是必要的。然后,您可以引入控制器。 Model_View_ViewModel_Controller

【讨论】:

  • +1 用于描述您可能希望选择 MVVMC 而不是普通 MVVM 的情况
  • view-model 只是一个模型,用于执行视图和模型之间的数据绑定。可能令人困惑的是 MVVM 模式将视图模型嵌入到控制器中,而不是保持独立 (MVVMC)。
【解决方案2】:

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

MVVM is dead, long live MVVMC!
MVMMC – MVVM grows a Controller

【讨论】:

    猜你喜欢
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多