如何检查PropertyChanged事件上更改的属性
本文关键字:属性 事件 PropertyChanged 何检查 检查 | 更新日期: 2023-09-27 18:06:29
我注册了一个像下面这样改变的属性事件
addedItem.PropertyChanged += OnColumnModified;
和OnColumnModified的定义如下
private void OnColumnModified(object sender, EventArgs e)
{
var modifiedItem = (sender as MarketRecord.FItemExtended);
if (!modifedFItemsExtended.Contains(modifiedItem))
{
modifedFItemsExtended.Add(modifiedItem);
}
}
现在我想检查在触发此事件时modifiedItem的哪个属性被更改。如何处理?
使用PropertyChangedEventArgs代替EventArgs (http://msdn.microsoft.com/en-us/library/system.componentmodel.propertychangedeventargs.aspx)
private void OnColumnModified(object sender, PropertyChangedEventArgs e)
{
if("Foo".Equals(e.PropertyName)) { /* do stuff here */ }
}
不妨试试:
PropertyChangedEventArgs应该是你收到的事件,而不是它的基础EventArgs
private void OnColumnModified(object sender, PropertyChangedEventArgs e) {
var modifiedItem = (sender as MarketRecord.FItemExtended);
var propertyChanged = e.PropertyName;
if (!modifedFItemsExtended.Contains(modifiedItem))
modifedFItemsExtended.Add(modifiedItem);
}
我想是这样的:
e.PropertyName
编辑:和使用PropertyChangedEventArgs
代替EventArgs
,如otis23说
首先你可以将'e'的类型从EventArgs更改为PropertyChangedEventArgs。现在,您的e对象中有了一个名为"PropertyName"的属性,其中包含了更改后的属性的属性名称(字符串)。