gpt4 book ai didi

wpf - 模型、 View 、 View 模型和演示者

转载 作者:行者123 更新时间:2023-12-03 10:15:26 27 4
gpt4 key购买 nike

我正在尝试掌握不同的模式(MVP、MVVM 等)并找到适合我需要的模式。经过我所有的阅读,我仍然不确定。希望有人可以为我阐明这一点。

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

我看到的问题是模型与 View 过于耦合。此外,Presenter 正在决定针对模型调用哪些方法。目前, View 由一个 WinForms 网格组成,它由 ICustomView 公开,允许演示者针对 View 调用方法。然而,它增加了 Presenter 和 View 的耦合,这使得将这个 WinForms 网格换成 WPF 网格或图表等变得困难

我正在考虑使模型成为一个完全独立的实体,可以说 IModel 具有单个方法 ProcessUpdate(字符串主题,IMessage 有效负载)。这会将逻辑从演示者转移到模型中。这也意味着多个 View 可以共享相同的模型。自定义模型可以具有用于特定自定义的附加接口(interface),但演示者只需要了解 IModel。

这听起来像一个合理的想法吗?我在这里错过了什么吗?

任何建议表示赞赏。

谢谢

最佳答案

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

话虽如此,您的 MVVM 对象将是:

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

查看:你的用户界面。我通常将我的作为 ViewModel 类类型的 DataTemplate。它应该绑定(bind)到您的 ViewModel 的属性和命令。

查看型号:将两者结合的作品。 View 中显示的任何数据都应绑定(bind)到 ViewModel 中的属性。 View 中的任何命令(例如 Button Clicks)也应该指向 ViewModel 中的方法。

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

关于wpf - 模型、 View 、 View 模型和演示者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com