Для большего количества классов, производных от базового класса, я решил иметь базовый UserControl и производные для каждого производного класса (для визуализации; поле с правой стороны изображения).
Теперь каждый из производных элементов управления UserControl имеет свои настройки (красный прямоугольник слева). Пользовательский интерфейс настроек представляет собой отдельный элемент управления UserControl (его можно свободно перемещать, помещать в отдельный диалог, если он слишком большой ...) и имеет базовый класс данных, который это изменяется (экземпляр этого класса является членом основного UserControl).
альтернативный текст http://a.imageshack.us/img651/2710/46937664.png
Это подводит меня к созданию отдельного класса, содержащего (и, возможно, сохраняющего) данные настроек, отдельного UserControl для установки значений и соединяющего их вручную все вместе.
Это не первый раз, когда я сталкиваюсь с подобной проблемой, поэтому я начал думать о каком-то интерфейсе class +, позволяющем мне легко создавать классы хранения данных и генерировать пользовательские элементы управления. Моя идея что-то вроде
class SettingsItem
{
string name;
TypeEnum type;
double value; //how about different types eg. bool? Inheritance?
}
Класс настроек будет Список этих элементов. Для каждого типа будет одно значение UserControl (флажок / текстовое поле / числовое поле + описание). Цикл foreach
создает конечный элемент UserControl (одно значение UC одно под другим).
С одной стороны, мне нравится эта идея как интригующая задача и потенциальное облегчение от скучных, повторяющихся и трудоемких задач, когда меньшие квадраты превращаются в более крупные и выравнивают их. С другой стороны, мне кажется, что это похоже на убийство мухи из дробовика.
Есть ли какое-нибудь стандартное / готовое решение для этого? Есть ли лучший способ сделать это? Или это просто слишком сложное решение для мелкой проблемы? Буду рад любым ответам, предложениям, замечаниям ...