2011-01-16 8 views
1

を変更したとき:コールセッタークラスの任意のプロパティには、以下のようなクラスを考える

public class LoginInfo 
{ 
    public int UserId; 
    public string Username; 
} 

と別のクラス

public class OtherClass 
{ 
    public static LoginInfo Info 
    { 
     get 
     { 
      return SessionBll.GetLoginInfo(someInt); 
     } 
     set 
     { 
      SessionBll.UpdateLoginInfo(value, someInt); 
     } 
    } 
} 

と、この与えられた:

OtherClass.LoginInfo.Username = "BillyBob"; 

私はどのように呼び出すことができますがLoginInfoの設定者がLoginInfoのプロパティを変更したとき?私は私ができることを知っています:

しかし、私はこれらの3つの行なしでこれをしたいと思います。私はそれが自動になりたい

がLOGININFOクラスでイベントをサブスクライブすることになったおかげで

答えて

3

は、その後、あなたの他のクラスであなたがLOGINFOクラスへの参照を持っているとPropertyChangedEventに加入する必要が

public class LoginInfo : INotifyPropertyChanged 
{ 
    private int _userID; 
    private string _UserName; 

    public event PropertyChangedEventHandler PropertyChanged; 

    public int UserId 
    { 
     get { return this._userID; } 
     set 
     { 
      if (value != this._userID) 
      { 
       this._userID = value; 
       NotifyPropertyChanged("UserID"); 
      } 
     } 
    } 

    public string Username 
    { 
     get { return this._UserName; } 
     set 
     { 
      if (value != this._UserName) 
      { 
       this._UserName = value; 
       NotifyPropertyChanged("UserName"); 
      } 
     } 
    } 

    private void NotifyPropertyChanged(String info) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(info)); 
     } 
    } 
} 

あなたのクラスに次の修正を試してみてください。

_privateLogInfo.PropertyChanged += new PropertyChangedEventHandler(methodToBeCalledToHandleChanges); 

その後methodToBeCalledToHandleChangesの変更を処理します。

+0

現在、OtherClassには静的メンバーしかありません。それが問題なのだろうか? –

+0

loginfoオブジェクトへの参照と、変更を処理するために使用するメソッドが静的である限り、それは問題ありません。 –

+0

ええええええええ、問題は、私の質問で見られるプロパティ以外のloginfoクラスへの参照がないということです。私の頭脳がまだ働いているとは思わないでください... –

5

は、多くの異なるアプローチがあります。最も簡単なのはLoginInfoINotifyPropertyChangedを実装し、OtherClassPropertyChangedイベントに登録して、必要に応じてそのイベントハンドラを呼び出すことができます。

何があっても、これを正しく配線するためには何らかの作業が必要です。

+0

MSDNではINotifyPropertyChangedは通常、データバインディングのコンテキストで参照されます。別の文脈でこれを使うのは大丈夫ですか? –

+0

@ subt13:大丈夫です。あなたが気分が悪い場合は、同じエフェクトで独自のインターフェースを定義することができます。 – jason

+0

いいですね。それほど問題がなければ、コードがOtherClassのように見えるかもしれないスニペットを投稿できますか? –

関連する問題