我不认为这是一个bug,它可能是一个功能(有副作用:-)。您可以在Microsoft网站上查看属性网格源。相关部分在
GridEntry.cs
代码:
public override bool Equals(object obj) {
if (NonParentEquals(obj)) {
return((GridEntry)obj).ParentGridEntry == this.ParentGridEntry;
}
return false;
}
internal virtual bool NonParentEquals(object obj) {
if (obj == this) return true;
if (obj == null) return false;
if (!(obj is GridEntry)) return false;
GridEntry pe = (GridEntry)obj;
return pe.PropertyLabel.Equals(this.PropertyLabel) &&
pe.PropertyType.Equals(this.PropertyType) && pe.PropertyDepth == this.PropertyDepth;
}
如您所见,使用的是PropertyLabel。如果进一步遵循代码,标签将最终使用属性的DisplayName(如果未定义DisplayName属性,则使用名称)。