我已经在下面的类中实现了 INotifyPropertyChanged
public class FactoryItems : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
string symbol;
public string Symbol
{
get { return symbol; }
set { symbol = value; OnPropertyChanged("Symbol"); }
}
public FactoryItems()
{
}
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
当 Symbol 属性更改时事件触发没有问题,但 PropertyChanged 事件始终为 null,此类仅实例化一次,我在构造函数上放置了一个断点以确保它是这种情况。
在另一个类中,我是这样订阅的:
Data.Tables.FactoryItems = new Data.FactoryItems();
Data.Tables.FactoryItems.PropertyChanged +=
new System.ComponentModel.PropertyChangedEventHandler(FactoryItems_SymbolChanged);
void FactoryItems_SymbolChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
doSomething();
}
但是处理程序始终为空,因为 PropertyChanged 为空。知道如何让它工作吗?
非常感谢。
最佳答案
您正在订阅一个特定实例上的事件。
这不会影响任何其他实例。
要查看所有实例的更改,您可以使用静态事件。
请注意,任何订阅静态事件的类都将永远保留在内存中。
关于c# - INotifyPropertyChanged PropertyChangedEventHandler 事件始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5058254/