【问题标题】:How to raise property changed when property in another class is changed? c#更改另一个类中的属性时如何提高属性更改? C#
【发布时间】:2017-07-13 08:38:48
【问题描述】:

我有两节课。当另一个类的属性发生更改时,如何引发 Property Changed?如果属性 ActualReading 发生更改,如何在第二类中引发属性更改?

1 级

  public class actualmeterreading : INotifyPropertyChanged
{
    private string _ID;

    private Int32 _ActualReading;

    public actualmeterreading()
    {
        this._ID = string.Empty;

        this._ActualReading = 0;
    }

    public string ID
    {
        get
        {
            return _ID;
        }

        set
        {
            _ID = value;
        }
    }


    public int ActualReading
    {
        get
        {
            return _ActualReading;
        }

        set
        {
            _ActualReading = value;
            RaisePropertyChanged("ActualReading");

        }
    }



    public event PropertyChangedEventHandler PropertyChanged;

    private void RaisePropertyChanged(String Name)
    {
        if (PropertyChanged != null)
            this.PropertyChanged(this, new PropertyChangedEventArgs(Name));
    }


}

2 级

public class meterreadingrecords : INotifyPropertyChanged
{
    private string _id;

    private actualmeterreading _actualmeterreading;

    public meterreadingrecords()
    {
        this._id = string.Empty;

        this._actualmeterreading = new actualmeterreading();


    }



    public string Id
    {
        get
        {
            return _id;
        }

        set
        {
            _id = value;
        }
    }



    public actualmeterreading Actualmeterreading
    {
        get
        {
            return _actualmeterreading;
        }

        set
        {

            _actualmeterreading = value;

        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void RaisePropertyChanged(String Name)
    {
        if (PropertyChanged != null)
            this.PropertyChanged(this, new PropertyChangedEventArgs(Name));
    }
}

【问题讨论】:

  • 您能澄清一下您的问题吗?
  • 只要确保你的类的所有属性都报告了变化,你就完成了。 Id 和 Actualmeterreading 直到现在都没有,所以修复它
  • 您将它用于 WPF 绑定还是用于什么?如果不是用于绑定,那似乎是一个糟糕的设计

标签: c#


【解决方案1】:

您可以链接事件。为此,您需要在第二类中注册事件,并在事件方法中触发第二类的RaisePropertyChanged

public meterreadingrecords()
{
    this._id = string.Empty;

    this._actualmeterreading = new actualmeterreading();

    this._actualmeterreading.PropertyChanged += _actualmeterreading_PropertyChanged


}

private void _actualmeterreading_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    RaisePropertyChanged("_actualmeterreading");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-25
    • 2020-02-21
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2013-12-10
    相关资源
    最近更新 更多