1

私はMVVMから始めています。

私のアプリケーションはこの「パターン(PMパターン-ここではこれについて議論しないでください:))」を使用し、正常に動作します。プロジェクトはとてもシンプルで、初心者でも簡単に理解できると思います!もしそうだったら...:)

私を困惑させていることが1つあります。それは、MVVM自体とは何の関係もないかもしれません。PropertyChangedEventHandler。

私は自分のコードを1行ずつステップ実行していて、呼び出し(以下のコード)を見ることができますが、なぜこのハンドラーを呼び出しているのか、それが何をしているのかわかりません!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows.Input;

namespace drMVVM.Model
{
    public class TextContent : INotifyPropertyChanged
    {
        private string text;
        public string Text
        {
            get { return text; }
            set
            {
                if (text != value)
                {
                    text = value;
                    OnPropertyChanged("Text");
                }
            }
        }

        private void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        #endregion
    }
}

ビューモデルにも同様のコードレイアウトがありますが、プロパティを設定する代わりに、オブジェクトのインスタンスを作成し、追加のロジックを適用しています。

PropertyChangedEventArgsは、何かが変更されたモデルのプロパティのみを更新するために使用されますか?もしそうなら、なぜそれはModelViewだけでなくモデルクラスに実装されているのですか?変更をリッスンするだけなのか、変更が発生したことを詳細に通知するのかを本能的に知ることができるからですか?それが通知である場合(私はそう思うので、インターフェースの名前です)、Modelクラスで何を通知しますか?

4

1 に答える 1

2

INotifyPropertyChangedプロパティの変更について誰かに通知したいときはいつでも必要です。したがって、ViewModel が変更についてビューに通知し、ビューがそのデータ バインディングを更新する必要がある場合は、ViewModel を実装して、プロパティが変更されるたびにイベントを発生させる必要があります。

同様に、モデルに変更可能なプロパティがあり、通知を受け取りたい場合は、それをモデルにも実装します。

自動化された影響がない限り、実際には必要ありません。1 つはヒントを必要とする WPF のデータ バインディングで、更新する必要があることがわかります。

于 2012-07-03T09:31:04.487 に答える