Можете ли вы использовать динамический источник в раскадровке, содержащейся в стиле или контрольной таблице

Я пытаюсь использовать DynamicResource в Storyboard, содержащемся в ControlTemplate.

Но, когда я пытаюсь это сделать, я получаю сообщение "Не могу заморозить это дерево временной шкалы раскадровки для использования по ошибке потоков".

Что здесь происходит?

Ответ 1

Нет, вы не можете использовать DynamicResource в Storyboard, который содержится в стиле или ControlTemplate. Фактически, вы также не можете использовать выражение привязки данных.

История здесь состоит в том, что все, что находится внутри стиля или ControlTemplate, должно быть безопасным для использования по потокам, и система синхронизации фактически пытается заморозить Style или ControlTemplate, чтобы сделать их потокобезопасными. Однако, если присутствует выражение DynamicResource или привязка данных, он не может их заморозить.

Подробнее см. Ссылка MSDN. Ознакомьтесь с разделами "Анимация в стиле" и "Анимация в контрольной таблице" (эта страница документации довольно длинная).

И для обходного пути (по крайней мере для моего сценария) см.: Сообщение WPF Forum.

Надеюсь, это поможет кому-то. Я потерял на нем больше, чем достаточно.

Кори