我正在尝试学习MVVM和WPF,而我正在使用MVVM Light Toolkit。这是我不完全理解的,也许是由于我的UI架构不正确。
我想要实现的目标实际上非常简单。顺便说一下,这是一个实用的应用程序。我想要一个充当“控制器”的窗口,以便说它有一组按钮。每个按钮都应该改变框架的内容。示例:一个按钮加载“屏幕”(或“视图”,如果您愿意),允许用户配置作为自定义对象的“代理”。另一个按钮加载来自代理商的第一个“屏幕”中的用户列表。此“用户”视图也需要加载到同一帧中。事实上,截至目前,具有所有按钮的窗口实际上只负责加载框架中的“屏幕”。应用程序的内容将在所有单独的“屏幕”中
我不理解的是1)如何让每个屏幕/视图彼此了解,因为一个依赖于另一个。似乎在MVVM中,ViewModel不应该知道任何事情。但就我而言,我需要传递信息(例如我的代理商)。
如果我能得到一些我需要研究的提示,那就太棒了。
谢谢!
答案 0 :(得分:13)
可能会连接某些点的一些想法:
这有帮助吗?保持你的想法,我将继续评论,我相信社区也将如此:)
答案 1 :(得分:4)
少数事情:
您可以先尝试准备模型(如果您还没有这样做),然后为它们制作视图模型(考虑要向视图公开的模型的属性),一旦准备就绪,建立您的视图基础在视图模型上。其他方式也是可行的选择 - 选择对你来说更自然的选择。
还有一件事:既然你提到你可以在一个(我假设)主区域中显示几个屏幕,那么考虑为你的视图模型配备bool IsCurrentlyActive
属性的东西。这样,您可以通过按钮点击轻松显示/隐藏视图,并仍然使用绑定机制。
答案 2 :(得分:2)
他们不应该彼此了解。这就是Messenger用于控制器和视图订阅他们感兴趣的事件。这样他们就不需要知道或关心他们发生事件的位置。
嗯肯德里克更快。他说的话。
听起来你有点想要一个Outlook类型的界面,一些导航可以加载其他视图。我刚才有同样的问题。 How to do Regions in WPF without Prism?
答案 3 :(得分:1)
为了更好地理解MVVM模式,请参阅本文:WPF Apps With The Model-View-ViewModel Design Pattern
另外,我建议您查看Caliburn Micro框架。