如何检查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的哪个属性被更改。如何处理?

如何检查PropertyChanged事件上更改的属性

使用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"的属性,其中包含了更改后的属性的属性名称(字符串)。