2013-07-12 2 views
1

У меня есть VisualTransition внутри элемента управления VisualStateGroup для кнопки. Раскадровка свойство привязывается к StaticResource раскадровку:Ошибка использования StaticResource в качестве раскадровки для VisualTransition

<VisualTransition From="MyLock" To="Unlocked" GeneratedDuration="0:0:2.0" Storyboard="{StaticResource Storyboard_Locked_ToUnlocked}"/> 

Когда я иду в «разблокировано» состояние с помощью VisualStateManager, я получаю следующее исключение: «System.InvalidOperationException: Заданное значение типа«System.Windows .Media.Animation.Storyboard 'должен иметь значение IsFrozen для false для изменения. " Ничто в раскадровке не изменяет сама раскадровка, поэтому я не уверен, что это значит.

Две странные вещи. Номер один, это не началось, пока вы не перешли с VS 2010 на VS 2012 и не установили framework .Net 4.5. Во-вторых, если я скопирую весь код и переместил его в свойство Storyboard внутри тега, я не получу ошибку. Таким образом, похоже, что это не что-то в самой раскадровке, просто проблема с использованием StaticResource для этого.

При исследовании, единственное, что я мог найти об ошибке, касался подписки на событие Completed раскадровки, чего я не делаю нигде, если VisualStateManager это не делает.

Заранее благодарим за любую помощь.

Редактировать: Я также должен добавить, что я хочу использовать это в двух разных переходах, и именно поэтому я предпочел бы, чтобы это был StaticResource, поэтому мне не нужно копировать/вставлять xaml. Я прокомментировал один из переходов и до сих пор получил ошибку, поэтому я не разделяю ее.

ответ

2

enter code here Для всех, кто сталкивается с этой проблемой, я нашел решение.

Простое изменение раскадровки, которое не должно быть общим, позволяет создавать его для каждого вызова анимации, который избавляется от этой ошибки. Установите x: общий для False на раскадровке для этого:

<Storyboard x:Shared="False" x:Key="Storyboard_Locked_ToUnlocked"> 

 Смежные вопросы

  • Нет связанных вопросов^_^