gpt4 book ai didi

mvvm - MVVM 架构中的模型与 MVC 相比

转载 作者:行者123 更新时间:2023-12-03 10:37:38 28 4
gpt4 key购买 nike

我正在尝试学习 MVVM 模式,特别是当 View 表示数据库表时该怎么做,但 View 有几个元素表示单个数据库字段。举个简单的例子:

假设我有一个 DateTime 类型的数据库字段(每个数据库字段都有一个属性的类),但在 View 中,我有一个用于日期组件的日期选择器和一个用于时间组件的 TimeSpan。

在 MVC 模式中,我总是有一个 POCO 模型,它包含一个可以为空的 DateTime 属性用于日期选择器和一个可以为空的 TimeSpan 属性用于时间。我会将数据库类映射到模型。

在 MVVM 模式中,我可以包装表示数据库字段的类,并在设置访问器上设置逻辑,使包装的类 DateTime 属性保持同步(并且由于 2 个字段可以为空, View 模型中的私有(private) DateTime 和 TimeSpan 字段,仅设置如果日期和时间都不为空,则为数据库类 Datetime 属性)

或者,我可以让 viewmodel 包装一个更像 MVC 模型的模型 - 即一个 POCO 模型,其中日期和时间组件表示单独的属性。然后, View 模型变成了一个更简单的包装器,它实现了 INotifyPropertyChanged,以及一个保存 ICommand,它仅在创建或更新数据库类的实例时添加日期和时间跨度。

显然,这两种方法都“有效”,但是什么会被认为是更好的实践和/或最符合 MVVM 架构的方法。谢谢你。

最佳答案

当您实现 INotifyPropertyChanged 时,事件就会出现,这在 MVVM 中是不可取的,因为您的应用程序可能会遇到控件在不同线程上更新其值的问题。

如果您使用第一种方法会更好。

关于mvvm - MVVM 架构中的模型与 MVC 相比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19338548/

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