从对象获取对其他的引用

时间:2014-07-09 19:10:25

标签: c# wpf

以下是我的代码块:

class MyClass: INotifyPropertyChanged
{
     ClearPendingBill cpb;
     public ClearPendingBill CPB
     {
        get { return cpb; }
        set
        {
            cpb = value;
            RaisePropertyChanged("CPB");
        }
     }
}

public partial class ClearPendingBill : UserControl, INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }

    protected bool SetField<T>(ref T field, T value, string propertyName)
    {
        if (EqualityComparer<T>.Default.Equals(field, value)) return false;
        field = value;
        OnPropertyChanged(propertyName);
        return true;
    }

    double _selected_pending_amt = 0;
    public string SelectedPendingAmount
    {
        get { return "₹ " + string.Format("{0:0,0.00}", _selected_pending_amt); }
        set
        {
            SetField(ref _selected_pending_amt, Convert.ToDouble(value), "SelectedPendingAmount");
        }
    }
}

在上面的代码中,ClearPendingBill的对象是在MyClass中创建的。是否有可能以某种方式从ClearPendingBill对象中引用MyClass对象?

2 个答案:

答案 0 :(得分:0)

当然有,你必须在构造上或通过ClearPendingBill上的其他方法传递它。

如果你写了:

ClearPendingBill cpb = new ClearPendingBill(this);

它会给它一个对拥有对象的引用(当然你需要一个构造函数来处理它)。 MyClass上的静态方法始终可访问(只要它们是公共的)。

尽管如此,但没有办法获得拥有对象。

答案 1 :(得分:0)

不是没有反向引用,因为对象可以包含多个(或没有)对象。

我假设您要通知包含类属性已更改。一种方法是让MyClassPropertyChanged类的ClearPendingBill事件添加处理程序。