В комментарии вы уточняете свою цель: «Единственное, что я хочу с ним сделать, это добавить свойство InitialValue, которое определяет первое значение, которое всегда присутствует в DDL.»
Я не думаю, что вам нужно создавать специальный пользовательский или пользовательский элемент управления для этого.
Я часто использую этот код в своих веб-приложениях для заполнения элементов управления списком. Вы передаете логическое значение, указывающее, должен ли дополнительный ListItem быть добавлен вверху списка, и текст для этого элемента.
public static void BindListControl (ListControl ctl, SqlDataReader dr,
String textColumn, String valueColumn, bool addBlankRow, string blankRowText)
{
ctl.Items.Clear();
ctl.DataSource = dr;
ctl.DataTextField = textColumn;
ctl.DataValueField = valueColumn;
ctl.DataBind();
if (addBlankRow == true) ctl.Items.Insert(0, blankRowText);
}
Это полезно, например, если вы хотите, чтобы каждый DropDownList имел в качестве начального значения пустое значение или текст, такой как «Выберите город».