Это звучит как идеальное использование для XML. Вы можете добавлять / удалять категории, изменять значения имени и описания и т. Д. Разобрать его в простую структуру классов ...
public class ParentCategory : Category
{
public List<Category> SubCategories { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
А затем вы просто привязываете эти классы к своему представлению.
Просто потому, что это известно во время разработки, не является достаточной причиной для создания тонны дублированного избыточного кода. Это делает вашу программу намного труднее поддерживать. Да, проще взглянуть на кого-то, кому неудобно с XML (или любым файлом данных), но если что-то изменится - вам нужно добавить другое свойство, например, в категории - вам нужно будет перейти и изменить каждый отдельный класс / перечисление. Грязный и утомительный.
edit: Просто чтобы уточнить, когда я говорю XML, это всего лишь мой предпочтительный формат. Вы также можете хранить свои данные в виде текста, CSV, независимо от вашего любимого формата. Я предпочитаю XML, так как с ним легче работать.
edit2:
Я вижу ваше беспокойство (if(carListView.SelectedValue == "Mondeo")
). Не зная (или не желая знать) всю вашу систему или то, что вы пытаетесь сделать, я бы предпочел работать в более общей, объектно-ориентированной манере.
То есть вам понадобится оператор if
для каждого типа машины? Почему бы просто не заставить машину делать свою работу?
public class ParentCategory : Category
{
public List<Category> SubCategories { get; set; }
public void DoThings()
{
// look at SubCategories, print something, etc
}
}
// and then get the item to do things!
((ParentCategory)carListView.SelectedValue).DoThings();
Таким образом, нет никакого обхода целых списков. Опять же, уменьшите количество строк.