首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模型、视图、视图模型和演示者

模型、视图、视图模型和演示者
EN

Stack Overflow用户
提问于 2011-04-19 22:06:23
回答 2查看 616关注 0票数 2

我正在尝试掌握不同的模式(MVP,MVVM等),并找到一个适合我的需求。读了这么多之后,我还是不太确定。希望有人能为我阐明这一点。

目前,我有一个WPF View,它实现了一个接口ICustomView。这个接口被注入到我的演示者中。然后,展示者负责订阅数据、管理订阅等。当数据返回给展示者时,它会针对模型(CustomBusinessObjects的IObservable集合)调用各种方法。它使用接口ICustomView完成此操作,因为IObservable是模型的属性。

我看到的问题是模型和视图的耦合太多了。此外,演示者还决定对模型调用哪些方法。目前,视图由一个WinForms网格组成,这是由ICustomView公开的,允许展示者对视图调用方法。但是,它增加了Presenter和View的耦合,这使得很难将此WinForms网格替换为WPF网格或图表等

我正在考虑让模型成为一个完全独立的实体,比如说使用一个方法ProcessUpdate(string topic,IMessage payload)的IModel。这将把逻辑从presenter移到Model中。这也意味着多个视图可以共享相同的模型。自定义模型可以具有用于特定定制的附加接口,但演示者只需了解IModel。

这听起来像是一个合理的想法吗?我是不是漏掉了什么?

任何建议都很感谢。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-19 23:02:52

我建议您从MVP切换到MVVM,因为您使用的是WPF。如果你使用的是ASP.Net或WinForms,我只会使用MVP。

也就是说,您的MVVM对象将是:

模型:简单数据对象。它不应包含任何功能,如保存或编辑,但可以具有验证逻辑。

视图:你的UI。我通常作为ViewModel类类型的DataTemplate来执行我的操作。它应该绑定到你的ViewModel的属性和命令。

ViewModel:将两者结合在一起。视图中显示的任何数据都应绑定到ViewModel中的属性。视图中的任何命令(如按钮单击)也应指向ViewModel中的方法。

例如,当用户点击视图上的GetCustomer按钮时,ViewModel应该接收命令,获取CustomerModel,并公开它的属性以便绑定到视图。当用户点击保存时,ViewModel应该验证模型是否有效,然后使用它的CustomerModel属性执行保存代码。

票数 3
EN

Stack Overflow用户

发布于 2011-04-19 22:15:29

就我个人而言,在使用WPF时,我更喜欢使用WPF数据网格,并将其绑定到MVVM模式中的数据上下文。我认为你首先需要摆脱的是WinForms网格(只要你使用的是WinForms网格,就几乎不可能解耦你的模型/视图。

我会做一些不同的研究。

WPF DataGrid

  • Binding
  • DataGrid to a DataContext

的MVVM模式

一旦你达到了这一点,你需要做的就是更新你的数据上下文,你的视图也会随之更新。

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

https://stackoverflow.com/questions/5717641

复制
相关文章

相似问题

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