gpt4 book ai didi

c# - PropertyChaned 事件的事件处理方法在哪里?

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:50 25 4
gpt4 key购买 nike

我编写了以下代码以将背景对象中的数据绑定(bind)到 WinForm UI。我使用 INotifyPropertyChanged 接口(interface)通知 UI 属性更改。但我没有看到任何事件处理程序被明确分配给事件 PropertyChanged。我用 .NET Reflector 检查了我的程序集,仍然没有找到相应的事件处理程序? PropertyChanged 事件的事件处理程序在哪里?这是微软的又一个编译器把戏吗?

这里是背景对象的代码:

    public class Calculation :INotifyPropertyChanged
{
private int _quantity, _price, _total;

public Calculation(int quantity, int price)
{
_quantity = quantity;
_price = price;
_total = price * price;
}

public event PropertyChangedEventHandler PropertyChanged;

private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)// I DIDN'T assign an event handler to it, how could
// it NOT be null??
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}

public int Quantity
{
get { return _quantity; }
set
{
_quantity = value;
//Raise the PropertyChanged event
NotifyPropertyChanged("Quantity");
}
}

public int Price
{
get { return _price; }
set
{
_price = value;
//Raise the PropertyChanged event
NotifyPropertyChanged("Price");
}
}

public int Total
{
get { return _quantity * _price; }
}
}

非常感谢!

最佳答案

我不确定我是否理解这个问题,但是如果您使用数据绑定(bind),它是绑定(bind)到您的类的绑定(bind)控件/表单 - 通过 INotifyPropertyChanged 接口(interface)(如本例所示) case) 或作为对 *Changed 模式的反射(reflect)(通过 PropertyDescriptor)。如果您真的想要拦截事件的add/remove 部分并查看堆栈跟踪以查看谁在添加/删除处理程序:

private PropertyChangedEventHandler propertyChanged;
public event PropertyChangedEventHandler PropertyChanged {
add { propertyChanged += value; } // <<======== breakpoint here
remove { propertyChanged -= value; } // <<===== breakpoint here
}

关于c# - PropertyChaned 事件的事件处理方法在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2197179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com