我已经实现了ICustomTypeDescriptor来为XCeed Propertygrid提供我的自定义描述符。
public class MyDescriptor : ICustomTypeDescriptor, IDisposable
{
public MyDescriptor(IMyInterface metadata)
{
/* Use object metadata to build the type descriptor */
}
}
这很好,除了PropertyGrid有标题“MyDescriptor”。我已经尝试过实现GetAttributes()
public AttributeCollection GetAttributes()
{
string theRightTitle = metaData.GetTitle(); // Dynamic title, differs depending on metaData object provided in constructor.
Attribute[] attributes = new Attribute[] {new DescriptionAttribute(theRightTitle) };
return new AttributeCollection(attributes);
}
但这不起作用......如何确保网格标题正确?
修改:所以我需要的是一种动态方式来生成PropertyGrid的标题。我已经更新了上面的代码示例以反映这一点。
答案 0 :(得分:1)
答案 1 :(得分:1)
您在PropertyGrid顶部看到的不是标题,它是TypeName以及空标题。如果要在TypeName旁边看到标题,请确保您的类包含“Name”属性。如果没有“Name”属性,则会添加一个空字符串作为标题。
public class MyDescriptor : ICustomTypeDescriptor
{
public string Name
{
get
{
return "AAA";
}
}
. . .
}
答案 2 :(得分:0)
或者您可以使用静态和动态信息的组合,如: -
[DisplayName("Data")]
public class MyDescriptor : ICustomTypeDescriptor
{
public string Name
{
get
{
return " - My Title";
}
}
. . .
}
属性网格的标题将是“数据 - 我的标题”