我在属性上注册了一个事件,如下所示
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的哪个属性已更改。我该如何处理?
答案 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”的属性,其中包含已更改属性的属性名称作为字符串。