3

我对 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");
            }
         }

在我的视图模型中,我像这样收集..

 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>();
4

2 回答 2

3

是的,您可以,ViewModel 可以公开模型,如果模型已经更改通知(就像您所说的模型引发 PropertyChanged 事件),它不必复制模型属性。

你也可以阅读这篇文章:http ://blog.alner.net/archive/2010/02/09/mvvm-to-wrap-or-not-to-wrap.aspx

于 2013-09-05T08:47:41.097 回答
3

实现 MVVM 模式

是的。您可以在 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 类。

于 2013-09-05T08:49:42.237 回答