我不确定在 WPF 应用程序中的何处存储数据。有两个原则可能会发生冲突。有人可以清理一下吗?
原则一:数据应该存储在模型中。
因此,例如 ObservableCollection<string> Articles
应该存储在模型中。 ViewModel 中的属性可以使其对 View 可用。
原则2:依赖于View的状态应该存储在ViewModel中。
这意味着 string _SelectedArticle
具有相应属性的变量 string SelectedArticle
应该存储在 ViewModel 中。
到目前为止,我只将不影响 View 的方法或值放入模型中,因为我(也许也)强烈遵循原则 2。但我不确定这是否是正确的方法。
我真的应该在 Model 中保留一些数据,在 ViewModel 中保留一些数据,还是有地方可以存储所有数据?
最佳答案
简单的答案是:数据应该存储在它所属的地方。
- 模型应该只包含数据本身 - 它可能包含您从外部服务、用户输入、数据访问层和其他方面获得的数据。
- ViewModels 应该将要呈现给用户的部分数据包装到适当的 wrappres 中,以便为用户提供查看和更改数据的能力 - 公共(public)属性、ObservableCollections 等。如果有许多相同的可视化表示数据,那么您必须为每个表示( View )构建适当的 ViewModel。
- View 使用 ViewModel,但另外可以在其中包含(并存储)一些验证(而非验证)逻辑和相关参数。
在你的例子中,模型应该有 List<string> Articles
. ViewModel 将使用此列表并构建 ObservableCollection<string> Articles
在构造函数中。和 SelectedArticle
也应该存储在 ViewModel 中,如果它的值仅用于在 View 中导航并且永远不会在 Model 中使用或保存到数据访问层中某处的 DB 中。
关于c# - 了解 WPF - 在模型或 ViewModel 中存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33284166/