我在VisualStateGroup内部有一个用于Button控件的VisualTransition。 Storyboard属性绑定到StaticResource Storyboard:
<VisualTransition From="MyLock" To="Unlocked" GeneratedDuration="0:0:2.0" Storyboard="{StaticResource Storyboard_Locked_ToUnlocked}"/>
当我使用VisualStateManager进入“Unlocked”状态时,我得到以下异常: “System.InvalidOperationException:'System.Windows.Media.Animation.Storyboard'类型的指定值必须将IsFrozen设置为false才能修改。” 故事板中没有任何东西可以修改故事板本身,所以我不确定这意味着什么。
两件奇怪的事情。排名第一,直到从VS 2010迁移到VS 2012并安装.Net 4.5框架才开始发生这种情况。其次,如果我复制所有代码并将其移动到标签内的Storyboard属性本身,我就不会收到错误。所以它似乎不是故事板本身的任何东西,只是为此使用StaticResource的问题。
在研究时,我唯一能找到的关于错误的事情是订阅故事板的Completed事件,我没有在任何地方做,除非VisualStateManager以某种方式这样做。
提前感谢您的帮助。
编辑:我还应该补充一点,我想在两个不同的转换中使用它,这就是为什么我更喜欢它是一个StaticResource,所以我不必复制/粘贴xaml。我注释掉了其中一个过渡但仍然出现了错误,所以我不是在分享它。
答案 0 :(得分:3)
enter code here
对于遇到此问题的其他人,我找到了解决方案。
简单地将故事板更改为不共享允许为每个动画调用创建它,从而消除此错误。在故事板上设置x:Shared to False来执行此操作:
<Storyboard x:Shared="False" x:Key="Storyboard_Locked_ToUnlocked">