В итоге я сделал это так:
Сначала я добавил класс с именем ColorCollection
, который в основном был обёрткой вокруг Color[]
с единственным основным отличием (обработка событий).
Добавил свойство в класс «Настройки» для ColorCollection, а затем сохранил настройки как коллекцию StringCollection, которую я установил вручную, используя загрузку параметров и сохраняя обработчики событий, используя методы, добавленные / перегруженные в ColorCollection
(ToString
и Parse
).
Поскольку изменение и подстрочный индекс массива не вызывают событие PropertyChanged
, я затем добавил новое событие с именем Changed
, которое может вызываться другими классами (PropertyChanged
определен в другом классе, поэтому мы не можем вручную вызывайте его даже из класса Settings
. Затем я добавил триггер события в оператор set
.
Это грязно, но, по крайней мере, есть некоторый уровень абстракции, поэтому грязь не сразу видна. Я закончил тем, что делал что-то подобное для большинства массивов, которые мне были нужны в настройках, так как мне нужно было запускать события, если изменился индекс.