我如何检查PropertyChanged事件上的哪个属性已更改

时间:2013-03-28 09:09:37

标签: c# wpf

我在属性上注册了一个事件,如下所示

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的哪个属性已更改。我该如何处理?

4 个答案:

答案 0 :(得分:3)

使用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 */ }
}

答案 1 :(得分:1)

也许试试:

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);

}

答案 2 :(得分:0)

我认为是这样的:

e.PropertyName

编辑:并使用PropertyChangedEventArgs代替EventArgs,就像otis 23所说

答案 3 :(得分:0)

首先,您可以将'e'的类型从EventArgs更改为PropertyChangedEventArgs。现在,您在e对象中添加一个名为“PropertyName”的属性,其中包含已更改属性的属性名称作为字符串。