C# 获取从对象到其他对象的引用
以下是我的代码块:C# 获取从对象到其他对象的引用,c#,wpf,C#,Wpf,以下是我的代码块: class MyClass: INotifyPropertyChanged { ClearPendingBill cpb; public ClearPendingBill CPB { get { return cpb; } set { cpb = value; RaisePropertyChanged("CPB"); } }
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");
}
}
}
class MyClass:INotifyPropertyChanged
{
票据中央处理器;
公共票据
{
获取{return cpb;}
设置
{
cpb=值;
RaisePropertyChanged(“CPB”);
}
}
}
公共部分类ClearPendingBill:UserControl,INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
受保护的虚拟void OnPropertyChanged(字符串propertyName)
{
PropertyChangedEventHandler处理程序=PropertyChanged;
if(handler!=null)handler(这是新的PropertyChangedEventArgs(propertyName));
}
受保护的布尔设置字段(参考T字段、T值、字符串属性名称)
{
if(EqualityComparer.Default.Equals(字段,值))返回false;
字段=值;
OnPropertyChanged(propertyName);
返回true;
}
双倍(已选)(待决)金额=0 ;;
公共字符串SelectedPendingAmount
{
获取{return“₹ " + string.Format(“{0:0,0.00}”,_selected_pending_amt);}
设置
{
设置字段(参考所选待决金额,转换为双(值),“所选待决金额”);
}
}
}
在上面的代码中,ClearPendingBill的对象是在MyClass内部创建的。是否有可能从ClearPendingBill对象引用MyClass对象?当然有,您必须在构造时传递它,或者在
ClearPendingBill
上通过其他方法传递它
如果你写:
ClearPendingBill cpb = new ClearPendingBill(this);
它会给它一个对所属对象的引用(当然你需要一个构造函数来处理它)。MyClass上的静态方法总是可以访问的(只要它们是公共的)
但是,正如所写的那样,无法获取所属对象。没有反向引用是不行的,因为该对象可能包含多个(或没有)对象
我假设您想通知包含类某个属性已更改。一种方法是让
MyClass
为ClearPendingBill
类的PropertyChanged
事件添加一个处理程序。我已编辑了您的标题。请参见“”,其中一致意见是“不,他们不应该”“.Unrelated:您的UserControl不应实现INotifyPropertyChanged
。奇怪-为什么需要这样做?为了什么目的?我的实际代码非常大和复杂。在这个问题中,我只放了很少的东西。你的UI类应该引用一个数据类,而不是相反。哦,非常感谢!!我应该想到这一点:)