我想问一些我找不到答案的问题(可能是我看起来很糟糕):
- 如何使用 sql/文件中的数据填充模型(在初始化窗口之前,创建模型的实例并在那里插入数据或其他内容?)
- 如何更改模型数据并写入它?(更准确地说,我可以在哪里更改ViewModel中的数据并调用更新sql/文件中数据的方法?)
- 如何从视图中获取数据并将其传递给 ViewModel 或 Model?(通过访问元素将其传递给 ViewModel 并使用方法将其传递给 Model 或者还有其他更正确的方法吗?)
我想问一些我找不到答案的问题(可能是我看起来很糟糕):
我最近又开始练习
WPF
,所以并不是说我做的一切都是正确的,但我会尝试解释基本概念。View
,并且用于此显示的数据是在 中准备的ViewModel
。ViewModel
以完全正常的编程方式与Model
其他业务逻辑进行通信 - 例如,通过“存储库”模式,并且可以从模型请求数据或要求保存数据。为此,它只需调用模型的某些方法并获取结果。ViewModel
实例化时立即设置。您只需在构造函数中从模型请求数据即可。View
通过ViewModel
-Binding
和。您只需将数据放入某个属性中并OnPropertyChanged
使用该属性的名称进行拉取 -View
这样它就会发现数据已更改,查看由该属性View
组成Binding
的元素并在那里拉取新数据。View
,它们被返回Binding
到源(通常“双向绑定”只是使用参数 完成Mode=TwoWay
),因此切换到ViewModel
相应的属性,然后你自己实现在这种情况下,在该属性的设置器中执行模型状态如何更改的逻辑,同时其他一些属性再次发生更改,并View
通过它们的binding
-i 显示回来。因此,
WPF
一切都建立在:ViewModel
等等。OnPropertyChange
(或者本身通知其自身变化的集合,您不需要自己在此处拉取任何内容 - 例如,ObservableCollection
, 或DataTable
)сommands
大致类似于事件,但是 in 中的事件WPF
在 中处理code behind View
,并且命令被发送到ViewModel
那里并拉取某些事件是的,某种逻辑是可以
code behind view
完成的,但这是当你无法通过沟通来完成的时候ViewModel
,并不非常推荐。一般来说,一方面,
MVVM
这通常是完全普通的程序代码,以标准方式从后端读取数据。另一方面,您不应该直接访问其中的界面元素,而应尝试使用绑定和命令(在极端情况下为事件)发送和接收数据。这里最重要的是适应这种范式,乍一看这似乎很不寻常。
至于您的具体问题,交互的细节很大程度上
View
取决于ViewModel
您与哪些控件交互。您需要查看可以对特定控件进行哪些绑定,以便显示模型中的数据更改并接收View
更改此数据的请求。我通常会查看特定控件的文档,并且立即有该控件的典型绑定示例。