c# - 努力理解 MVVM 架构

标签 c# wpf mvvm mvvm-light

我正在尝试学习 MVVM 和 WPF,并且正在使用 MVVM Light Toolkit。以下是我没有完全理解的内容,可能是因为我的 UI 架构不正确。

我想要完成的实际上很简单。顺便说一句,这是一个实用程序。我想要一个用作“ Controller ”的窗口,可以说有一组按钮。每个按钮都应更改框架的内容。示例:一个按钮加载一个“屏幕”(如果您愿意,也可以加载一个“ View ”),允许用户配置一个“代理”,这是一个自定义对象。另一个按钮从第一个“屏幕”中的机构加载用户列表。此“用户” View 也需要加载到同一框架中。事实上,截至目前,带有所有按钮的窗口实际上只负责加载框架中的“屏幕”。应用程序的内容将在所有单独的“屏幕”中

我不明白的是 1) 如何让每个屏幕/ View 相互了解,因为一个屏幕/ View 相互依赖。似乎在 MVVM 中,ViewModel 不应该知道任何事情。但就我而言,我需要传递信息(例如我的 Agency )。

如果我能得到一些关于我需要研究什么的提示,那就太好了。

谢谢!

最佳答案

可能将某些点联系起来的一些想法:

  • 很可能每个 View (“屏幕”)有一个 View 模型。
  • 每个 View 模型将包含其对应 View 的所有逻辑
  • Viewmodels 可以并且将会了解模型(机构、用户)
  • Viewmodel 可以通过 MVVM Light 中的 Messenger 相互通信
  • 将 MVVM Light 的 Messenger 视为“应用程序范围的事件系统”。当您从一个 View 模型发送消息时,任何其他 View 模型都可以监听该消息/事件并根据需要对其使用react。

这有帮助吗?让你的想法不断涌现,我会继续发表评论,我相信社区也会:)

关于c# - 努力理解 MVVM 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8156923/

相关文章:

asp.net-mvc - 在 Kendo UI ASP.net MVC 中使用 ViewModel

c# - 如何在反向的 richtextbox 中查找文本?

c# - protected 构造函数 - 不与 GetConstructors() 一起显示

c# - 属性的内部 setter 可以序列化吗?

c# - 如何在 DataGrid WPF 中显示 SortedDictionary?

c# - 在 WPF 中添加 X 关闭按钮

c# - 有什么方法可以避免实现 ICommand 以在 MVVM 中使用 Button?

c# - 如何使用c#显示单词差异?

wpf - 将wpf应用程序转换为wpf浏览器应用程序

wpf - 如何在MVVM WPF中刷新UI