首先,我对 WPF 和 MVVM 很陌生。我已经阅读了很多关于 Views
的内容。和 ViewModels
在过去的两个月里,我认为我对他们都有足够的了解。大多数文章很少涉及的是Model
部分,我发现自己很难很好地理解它。
目前,我的理解是模型往往是那些 entities
我们知道实体关系 (ER) 模型 对于关系数据库。有一段时间,我确实会看到像 Services
这样的术语。 ,但我不确定它们是否为 Models
.
现在,我想到了两个问题:
Views
展示自己,这些被认为是Models
?到目前为止,我会将它们放在那些所谓的 Services
下。 ,它们只是仅在应用程序生命周期内存在的单例。然后,我会制作 ViewModels
通过调用 Services'
与他们互动方法,或订阅 Services
中的更改通过 INotifyPropertyChanged
.但是这样做让我感到困惑,因为他们感觉不像 Models
;事实上,它们感觉像是完全在 MVVM 之外的东西。Car
模型类,我的应用程序需要保存 Car
的列表对象。再说一次,我是否应该拥有那些所谓的 Services
,它将负责序列化和反序列化 Car
对象,并在 List<Car>
中维护它?然后同样的问题又来了-是Service
Model
的一部分?编辑
有人告诉我我的问题 1 不清楚。所以让我举个例子。
例如,程序有一个带有多个
Views
的窗口。在窗口的不同部分。<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<view:ViewA Grid.Column="0" />
<view:ViewB Grid.Column="1" />
</Grid>
所以在 ViewA
,有一个Button
有它的命令绑定(bind)。因此,当单击按钮时,它会导致某些东西在后台运行(例如,可以是计算任务)。当那个东西运行时,程序进入一个特殊状态。当程序进入此状态时,Controls
之一(例如 TextBox
)将进入禁用模式( IsEnabled="False"
),暂时不接受任何输入,直到后台任务完成并且程序恢复正常状态。那么,这整件事在哪里适合整个 MVVM 概念呢?我知道这可能不是
Model
相关问题了,但是当我开始这个线程时,我认为它很可能适合 Model
.
最佳答案
模型不是那些呈现 View 或改变 View 的模型。模型是数据类。例如,假设您有一个显示汽车详细信息的 View(Car.xaml)。该 View 可能具有图片、标题、汽车名称、最高速度、里程以及许多共同特征。
您将此 View 绑定(bind)到 View 模型(CarViewModel.cs),在该模型中您将 View 的属性绑定(bind)到列表或独立属性,如字符串、 double 和全部。
如果要将详细信息绑定(bind)到列表,则肯定需要为该列表定义数据类。为此,您创建一个数据类。说 CarData.cs。
public class CarData : BindableBase
{
private string carName;
private double mileage;
public string CarName
{
get {return carName;}
set {SetProperty(ref carName, value);}
}
........
}
等等..
您可以在此数据类中定义所有属性,并为每个 View 重用相同的类,甚至在 View 模型中创建汽车列表。
当模型更新时,由于触发了 NotifyPropertyChanged 事件, View 也将更新。
为了保存数据,您可以在需要时将它们序列化为 xml 文件,例如在单击按钮期间或关闭应用程序时。
只需将 View 模型中的列表序列化为 xml 文件。
我希望你明白了。如有疑问,请回复。
关于WPF MVVM - 模型由什么组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37016882/