1

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

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

4 回答 4

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 */ }
}
于 2013-03-28T09:14:46.907 回答
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);

}
于 2013-03-28T09:15:16.790 回答
0

我认为是这样的:

e.PropertyName

编辑:并使用PropertyChangedEventArgs而不是EventArgs,就像 otis23 说的

于 2013-03-28T09:14:19.490 回答
0

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

于 2013-03-28T09:15:06.953 回答