You didn't specify the platform (WinForms, WPF, or MVC)...
At first blush, I would create a list of Shape objects:
public class MyShape
{
public ShapeEnum Value { get; set; }
public string Name { get { return this.Value.ToString(); } }
public string Description {get; set; }
}
public ListOfShapes:List<MyShape>{}
And then instantiate it in a static class:
public static Globals
{
public static ListOfShapes Shapes = null;
static Globals()
{
Shapes = new ListOfShapes(){ new MyShape(){Value=ShapeEnum.Circle, Description = "circle description"},...};
}
}
Bind your control to that list.