Я думаю, что понимание ошибки может помочь вам решить проблему.
Анимация требует использования потоков помимо потока пользовательского интерфейса. Таким образом, раскадровки должны быть замораживаемыми, что означает, что все анимации в раскадровке должны быть замораживаемыми, а все, что используют эти анимации, также должно быть замораживаемым.
Привязки не замораживаются - в значительной степени по определению, поскольку они представляют собой механизм, посредством которого свойство зависимости может быть изменено. Вы не можете использовать динамическую привязку в цветной анимации - есть вероятность, что свойство может измениться во время работы анимации. То же самое происходит, привязываетесь ли вы к объекту или используете DynamicResource
.
Дело в том, что это защищает вас от чего-то, чего вы на самом деле не хотите. Вы не хотите, чтобы цвета менялись во время анимации. Это не то, что вы пытаетесь достичь. Требуется изменить цветовые ресурсы, которые использует анимация, если пользователь выбирает другой скин.
Таким образом, вместо привязки раскадровок к ресурсам с поддержкой скинов, добавьте раскадровки в словарь ресурсов, которые устанавливаются при смене скина (используя статические привязки для установки цветов), и используйте динамическое связывание в триггерах событий. Это должно работать.