3

MVVM パターンで混乱しました。実際には、私は ObservableCollection を持っている ViewModel を持っています。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 の基本クラスからは派生しません。アプリケーションでユース ケースまたはユーザー タスクをサポートするために必要なプレゼンテーション ロジックをカプセル化します。ビュー モデルは、ビューとモデルから独立してテストできます。

  • 通常、ビュー モデルはビューを直接参照しません。ビューがデータをバインドできるプロパティとコマンドを実装します。ビューに any を通知します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 に答える