gpt4 book ai didi

mvvm - 当 ONE View 有 ONE ViewModel 时,Customer-Order-Product 关系/gui 会变得非常讨厌

转载 作者:行者123 更新时间:2023-12-03 10:30:41 25 4
gpt4 key购买 nike

我想我得到了某种知识闪现,现在我完全糊涂了。我查看了许多 mvvm 实现,例如 Ocean、Stuff、BBQShack、MVVM 演示、WAF、Chinch1、2 等...

每个人都以不同的方式做 MVVM ......

有一种情况让我抓狂。我缺乏理解,我希望有人能清除我脑海中的乌云。

但在我想发表 Jeremy Likness 的评论之前:

“我相信大多数开发人员都同意一个 View 应该只有一个 View 模型。没有必要将多个 View 模型附加到一个 View 。如果你考虑关注点分离,这是有道理的,因为如果你有一个“联系人小部件”绑定(bind)到“联系人 View 模型”的屏幕和绑定(bind)到“公司 View 模型”的“公司小部件”,这些应该是单独的 View ,而不是具有两个 View 模型的单个 View 。

场景:当一个 View 有一个 ViewModel 或者一个 ViewModel 绑定(bind)到一个 UserControl...

问题:我需要为每个 ViewModel 创建 3 个 UserControls CustomerView、OrderView、ProductView 吗?如果是这样,您如何在 GUI 中的 3 个用户控件与后台的 3 个 ViewModel 之间同步数据绑定(bind)?使用消息系统?

如果您的答案是 ,那么我为什么不创建一个绑定(bind)到 BillingViewModel 的大用户控件作为 Controller ,它公开属性 ObservableCollection CustomerListWithAllOrdersAndProducts 可以很容易地绑定(bind)到顶部控件的数据上下文和它下面的所有 3 个网格(客户等...)绑定(bind)到当前数据上下文。那么客户的变化会自动改变订单和产品......

当屏幕中不仅有 3 个用户控件(如 DataGrid),而且还有带有 5 个文本框的客户公式和带有 3 个文本框的订单公式时,您将如何处理这种情况,您是否会将这些公式放在另外 2 个用户控件中,以便您有 5 个用户控件Window 和所有这些都由其 ViewModel 与 Messenger 系统通信“映射”。这可能会变得非常困惑......他们在大型 mvvm 应用程序中真的是这样吗?

最佳答案

您建议您需要创建 3 个控件(客户/订单/产品),因为您的设计要求您这样做。这意味着您的 GUI 设计人员不能选择将客户字段与订单或产品字段交错。

现在这可能是一个好主意,也可能不是一个好主意……但我认为这是一个奇怪的限制。 (这意味着您不能将客户地址与订单确认一起重复,因为它位于不同的表中)。

这些 MVVM 设计风格之一比其他设计风格更正确并不是那么简单。我建议您查看替代方案并选择可帮助您解决问题的 MVVM 风格。而且这个 1:1 的教条似乎对你没有帮助,所以我会放弃它。

关于mvvm - 当 ONE View 有 ONE ViewModel 时,Customer-Order-Product 关系/gui 会变得非常讨厌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3743152/

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