Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVVM模式混淆_C#_.net_Wpf_Mvvm - Fatal编程技术网

C# MVVM模式混淆

C# MVVM模式混淆,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,我对MVVM模式感到困惑。实际上,我有一个ViewModel,其中我有一个ObservableCollection,这里AssignmentClass和model assignment相同,但AssignmentClass中的NotifypropertyChanged。 所以我的问题是,我是否可以在模型上实现INotifypropertyChanged,这样就不必创建另一个类(AssignmentClass),根据MVVM模式是否正确 我的模型是 public class assignment

我对MVVM模式感到困惑。实际上,我有一个ViewModel,其中我有一个ObservableCollection,这里AssignmentClass和model assignment相同,但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中,我收集了如下内容:

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


            }
AssignmentCollection=新的ObservableCollection();
var lst=await App.conn.QueryAsync(“从分配中选择*”);
对于(int i=0;i<6;i++)
{
AssignmentClass asd=新AssignmentClass();
asd.id=lst[i].id;
AssignmentCollection.Add(asd);
}
我可以在模型分配中这样设置我的集合吗..如果它实现了propertychanged

AssignmentCollection = new ObservableCollection<assignment>();
AssignmentCollection=新的ObservableCollection();

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

你也可以阅读这篇文章:

对。可以在Model或ViewModel类中实现通知

视图模型类

  • 视图模型是一个非可视类,不派生自任何WPF或Silverlight基类。它封装了支持应用程序中的用例或用户任务所需的表示逻辑。视图模型可以独立于视图和模型进行测试

  • 视图模型通常不直接引用视图。它实现视图可以绑定数据的属性和命令。它通过INotifyPropertyChanged和INotifyCollectionChanged接口的更改通知事件通知视图任何
    状态更改

模型类

  • 模型类是封装应用程序数据和业务逻辑的非可视类。他们负责管理应用程序的数据,并通过封装所需的业务规则和数据验证逻辑来确保其一致性和有效性

  • 模型类不直接引用视图或视图模型类,也不依赖于它们的实现方式

  • 模型类通常通过INotifyPropertyChanged和INotifyCollectionChanged接口提供
    属性和集合更改通知事件。这使它们可以轻松地在视图中绑定数据。表示对象集合的模型类通常派生自ObservableCollection类