2016-09-22 26 views
0

INotifyPropertyChangedオブジェクトで特定のプロパティをリッスンする一部のコードをインターネットで検索しました。それらのほとんどは、プロパティ名のようにnullまたはString.Emptyのいずれかを使用して変更したMSDNWPFでのプロパティの変更を監視する正しい方法

オブジェクトのすべてのプロパティを示すことができPropertyChangedイベントに応じて、

notifier.PropertyChanged += 
    (s,e) => { 
     if(e.PropertyName.Equals(propertyName)) 
      run_my_code(); 
    } 

しかし形態であり、 PropertyChangedEventArgs。

上記の実装は

notifier.PropertyChanged += 
    (s,e) => { 
     if(e.PropertyName.Equals(propertyName) || string.IsNullOrEmpty(e.PropertyName)) 
      run_my_code(); 
    } 

されなければなりませんか?他にもたくさんのコードがあるので、別のものを想定しなければならないのでしょうか?私はときどきnullまたは空の文字列でプロパティの変更を通知するときに動作しないいくつかのコードを持っています。

+0

ドキュメントでは、イベントを実装して呼び出す人がnullまたは空を使用する可能性がありますが、実装固有のものであると書かれています。したがって...それは依存します。私の考えは、第2のアプローチが必要でない限り、あなたの最初のアプローチを使用しています。 – strongbutgood

+0

あなたは正しい –

+0

私のコードがマイクロソフトのインターフェイスを悪用する方法については、ドキュメントには何の支配もないので、許可する必要があります。 N.B.私のiPhoneは、「マイクロソフト」を「マイクロ侵略」に自動修正することを提案している。それをあなたがするものにする。しかし、うーん、あなたは知っている、盲目の馬、良い男の子...すべて。 –

答えて

2

これは実際にはrun_my_codeが行うことに依存します。 PropertyChangedイベントは、オブジェクト上で1つ以上のプロパティが変更されたことを単純に示します。

run_my_codeは、どのプロパティが変更されたかに基づいて決定する必要がある場合は、チェックする必要があります。そうでなければ、チェックする必要はありません。

+0

私が引用したコードは*実際には*チェックを行いました:変更されたプロパティが興味のあるものでなければ何もしません。私の質問です:変更されたプロパティ名がない場合、Microsoftによると、これはすべてのプロパティが変更される可能性があります。それで私は 'run_my_code'をしますか? –

+0

@EarthEngineオブジェクトに「PropertyChanged」イベントをトリガするために起こったことは、すべて、実装者の制御下にあります。 _彼らがあなたに物件名を渡しても、実際に何か変わったというルールはありません。実装を知っていない限り、その質問に対する決定的な答えはありません。 –

関連する問題