【发布时间】:2016-05-13 05:46:14
【问题描述】:
我正在尝试学习 MVVM,但遇到了一些麻烦。我是 xaml 和 c# 的新手。
到目前为止我所拥有的:
一个
person类,定义一个人对象:姓名、年龄和其他信息-
一个模型类
李>people,拥有一个私有链表(人的列表),其中还包含get、remove、add等方法并做一些计算 一个视图模型类,在 xaml 后面的代码和模型之间进行转换/解析/转换。
代码文件
mainWindow.xaml.cs后面的xaml,它监听按钮点击等,并从viewModel类调用方法,并进行一些简单的绑定,例如total.Content = objModelView.getTotal()。
我没有使用INotifyPropertyChangedObservableCollection,仍然试图将我的头包裹起来。虽然我的程序做我想做的事,但我不确定如何更好地构建它。
基本上我有两个主要问题:
- 我在网上看到人们在 viewmodel 中存储/启动项目列表的示例,我不应该将列表保留在模型中吗,应该是所有数据的存储位置吗?
- 假设我想将所有项目(在模型类的列表中)显示到数据网格上。现在在我的程序中:mainWindow.xaml.cs 将检测到按钮单击,然后它要求 viewModel 将其存储在模型中,如果没有错误,则后面的代码将执行 xaml
people_dataGrid.Items.Add(new person { name = newName, age = newAge, address = newAdd });这是不好的做法吗?不知道如何在此处使用 ObservableCollection,它能否以某种方式检测到我的模型类列表中的更改,然后将行删除并添加到数据网格中?
我已经阅读了一整天,但我在这里感到震惊,希望我能得到一些方向
【问题讨论】:
-
你需要使用 INPC 和 ObservableCollection,否则它不是 MVVM。 MVVM 应该在 Model 中完成所有动作,而 INPC/INCC 是 View 如何知道数据已更改,以及屏幕需要更新的方式。听起来您实际上是在编写 MVP 应用程序。