我在MVVM模式中感到困惑。实际上我有ViewModel,其中我有一个ObservableCollection,AssignmentClass与模型赋值相同,但AssignmentClass中有NotifypropertyChanged。 所以我的问题是我可以在模型上实现INotifypropertyChanged,这样我就不必创建另一个类(AssignmentClass),根据MVVM模式是否正确。
我的模特是
public class assignment
{
public int id { get; set; }
public string title { get; set; }
public string app_id { get; set; }
public string student_asg_status { get; set; }
public string teacher_id { get; set; }
public string teacher_name { get; set; }
public string asg_status { get; set; }
public string sdate { get; set; }
public string edate { get; set; }
public string creation_date { get; set; }
public string mod_date { get; set; }
public string app_title { get; set; }
public int category_id { get; set; }
public string app_category { get; set; }
public string cover { get; set; }
public string icon { get; set; }
public string settings { get; set; }
public string isenddatedefault { get; set; }
public string isstartdatedefault { get; set; }
public bool isdraft { get; set; }
}
并且我的AssignmentClass具有所有相同的属性但具有NotifyPropertyChanged..on属性id为..
private int _id;
public int id
{
get
{
return _id;
}
set
{
_id = value;
RaisePropertyChanged("id");
}
}
在我的viewmodel中我制作了像thi ..
的集合 AssignmentCollection = new ObservableCollection<AssignmentClass>();
var lst = await App.conn.QueryAsync<assignment>("SELECT * FROM assignment;");
for (int i = 0; i < 6; i++)
{
AssignmentClass asd = new AssignmentClass();
asd.id= lst[i].id;
AssignmentCollection.Add(asd);
}
我可以在模型分配上创建我的集合吗...如果它实现了propertychanged ..
AssignmentCollection = new ObservableCollection<assignment>();
答案 0 :(得分:3)
是的,您可以,ViewModel可以公开模型,如果模型已经更改通知,则不必复制模型属性(就像模型引发PropertyChanged事件时所说的那样)。
你也可以阅读这篇文章:http://blog.alner.net/archive/2010/02/09/mvvm-to-wrap-or-not-to-wrap.aspx
答案 1 :(得分:3)
是。您可以在Model或ViewModel类中实现通知。
查看模型类
视图模型是非可视类,不是从任何WPF或Silverlight基类派生的。它封装了支持应用程序中的用例或用户任务所需的表示逻辑。视图模型可以独立于视图和模型进行测试。
视图模型通常不直接引用视图。它实现了视图可以绑定数据的属性和命令。它通知任何state changes via change notification events via the INotifyPropertyChanged and INotifyCollectionChanged interfaces
。
模型类
模型类是封装应用程序数据和业务逻辑的非可视类。他们负责管理应用程序的数据,并通过封装所需的业务规则和数据验证逻辑来确保其一致性和有效性。
模型类不直接引用视图或视图模型类,也不依赖于它们的实现方式。
模型类通常提供property and collection change notification events through the INotifyPropertyChanged and INotifyCollectionChanged interfaces
。这允许它们在视图中容易地数据绑定。表示对象集合的模型类通常派生自ObservableCollection类。