3

ビュー fx に通知するときにRaisePropertyChangingを使用する必要がある理由がわかりません。

 private LoggingLvl _myLoggingLvl;
    public LoggingLvl MyLoggingLvl
    {
        get { return _myLoggingLvl; }
        set
        {
            RaisePropertyChanging("MyLoggingLvl");
            _myLoggingLvl = value;
            RaisePropertyChanged("MyLoggingLvl");
        }
    }

なぜ使用が推奨されるのRaisePropertyChangingですか?

4

3 に答える 3

7

を使用INotifyPropertyChangingすると、変更が適用される前に、コードを使用してプロパティの以前の値を使用する機会が得られます。これは頻繁に役立つわけではありませんが、役立つ場合があります。「アクティブなオブジェクト」を表すプロパティを想像すると、このイベントにより、オブジェクトが非アクティブ化されたときに起動するコードをトリガーできます。

不自然な例として、フィールドの値の変更を特定の方法で表示する必要がある UI を考えてみましょう。古い値は、新しい値を残して画面から「浮かび上がらせる」必要があります。モデル クラスが実装されている場合INotifyPropertyChanging、ビューモデル クラスをこのイベントにアタッチして、フロート アニメーションで使用する古い値をキャッシュすることができます。これにより、モデル クラスは現在の状態を表すことができ、viewmodel は UI を駆動するために必要なすべての値を維持できます。

于 2013-05-02T09:13:19.870 に答える
3

聴いたことがないのでRaisePropertyChangingオススメです指定したプロパティが変更されることを「外部」に通知する必要がある場合に使用できます。

これは、たとえば、アプリケーションの一部がシステムの他のパラメーターに対して変化するプロパティの状態を検証する必要がある場合に役立ちます。また、クラスが単一責任の原則に従っていない可能性があるため、変更の対象ではないことを示す場合もあります。アプリケーションのタイプの他のインスタンスの状態を認識します。

于 2013-05-02T08:50:08.203 に答える
0

INotifyPropertyChanging インターフェイスは、クライアント (通常はバインディング クライアント) に、プロパティ値が変更されていることを通知するために使用されます。

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertyching.aspx

プロパティで長時間実行される検証タスクを想定しています。プロパティ値の更新に 5 秒かかることを願っています。その間、他のいくつかのプロパティがそれを探していますが、これらのプロパティは競合状態で処理されます。キューの下で待機し、1 つのプロパティ変更通知が完了すると、最初のオブジェクトが変更されてプロパティ値を取得または設定します。

いくつか例を挙げましょう。

于 2013-05-02T08:49:09.950 に答える