我想问一些我找不到答案的问题(可能是我看起来很糟糕):
- 如何使用 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更改此数据的请求。我通常会查看特定控件的文档,并且立即有该控件的典型绑定示例。