我正在寻找一个属性编辑器的例子:
public class ContainerClass
{
public string ContainerName { get; set; }
public List<ContainerBase> Containers { get; set; }
public ContainerClasss()
{
Containers = new List<ContainerBase>();
}
}
public class ContainerBase
{
public string Name { get; set; }
public string Description { get; set; }
public string Material { get; set; }
public float Area { get; set; }
}
public class Bookbag : ContainerBase
{
public int Pockets { get; set; }
public Bookbag()
{
Description = "Bookbag";
}
}
public class Bookcase : ContainerBase
{
public Color Color { get; set; }
public int Shelves { get; set; }
public Bookcase()
{
Description = "Bookcase";
}
}
当我点击容器的[...]按钮时,[ADD]按钮允许我添加不同类型的容器,而不是基本容器类......
答案 0 :(得分:4)
您可以使用自定义UITypeEditor属性执行此操作:
public class ContainerClass
{
...
[Editor(typeof(MyCollectionEditor), typeof(UITypeEditor))]
public List<ContainerBase> Containers { get; set; }
...
}
使用此UITypeEditor:
public sealed class MyCollectionEditor : CollectionEditor // need a reference to System.Design.dll
{
public MyCollectionEditor(Type type)
: base(type)
{
}
protected override Type[] CreateNewItemTypes()
{
return new[] { typeof(ContainerBase), typeof(Bookbag), typeof(Bookcase) };
}
}
这就是它的样子: