0

独自の個々のウィンドウで電話オブジェクトをインスタンス化する電話交換をモデル化する静的クラスがあります。交換はインスタンス化された電話のリストを維持し、ある電話オブジェクトから別の電話オブジェクトに「ダイヤル」する方法が必要です。たとえば、2 つの電話オブジェクトを作成し、最初の電話オブジェクトのテキスト ボックスに 2 番目の電話番号を入力した場合、最初の電話 (発信者) 番号で更新される 2 番目の電話のプロパティ

私はデータバインディングを行いましたが、INotifyPropertyChangedは初めてです。これが私が持っているものです:

電話クラス:

 public class Phone : INotifyPropertyChanged
{
    private string _receivedNumber;
    public Phone(string phoneNumber)
    {
        PhoneNumber =  phoneNumber;
    }

    public string PhoneNumber
    {
        get;
        set;
    }



    public string Status
    {
        get;
        set;
    }

    public string ReceivedNumber
    {
        get { return _receivedNumber; }
        set
        {
            _receivedNumber = value;
            OnPropertyChanged("ReceivedNumber");
        }
    }

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


    public event PropertyChangedEventHandler PropertyChanged;
}

}

これが私のPhoneWindow.xaml.csのロジックです。接続したい最初の電話で通話ボタンをクリックすると、Exchangeリスト(存在する場合)から電話オブジェクト(受信者)に割り当てられます-今では2 つのオブジェクトがインスタンス化され、両方とも独自のウィンドウに表示されます。

2 番目の電話の ReceivedNumber プロパティを発信者に設定しましたが、不明な点があります。バインディング/コンテキストを更新して、2 番目の Phone オブジェクトに発信者番号を反映するにはどうすればよいですか?

 private void BtnCallClick(object sender, RoutedEventArgs e)
    {
        string number = txtDialNumber.Text;
        if (String.IsNullOrEmpty(number) || !IsNumeric.IsValidNumber(number) || Exchange.RetrievePhone(number) == null)
        {

            MessageBox.Show("The number entered is not valid or the phone doesn't exist");
            return;
        }
        Phone receiver = Exchange.RetrievePhone(number);
        receiver.ReceivedNumber = _phone.PhoneNumber;
        receiver.PropertyChanged += //<--  How to implement this?




    }

どうもありがとう

4

1 に答える 1

0

プロパティをサブスクライブできるようにするMVVMモデル用のModelBase抽象クラスを作成しました。

あなたはここでそれを見つけることができます:http: //xcalibur37.wordpress.com/2012/02/06/creating-a-viewmodel-base-part-iii-subscribing-can-make-all-the-difference/

これは次のように機能します。

myModel.Subscribe("MeterReading", obj => MyActionThatDoesStuff());

したがって、2つの異なるViewModelがmyModel.MeterReadingにサブスクライブしている場合、プロパティが変更されると、両方が更新を受け取る可能性があります。

于 2012-10-12T22:29:14.730 に答える