使用StaticResource作为VisualTransition的Storyboard时出错

时间:2013-07-12 19:20:55

标签: wpf storyboard visualstatemanager staticresource

我在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。我注释掉了其中一个过渡但仍然出现了错误,所以我不是在分享它。

1 个答案:

答案 0 :(得分:3)

enter code here对于遇到此问题的其他人,我找到了解决方案。

简单地将故事板更改为不共享允许为每个动画调用创建它,从而消除此错误。在故事板上设置x:Shared to False来执行此操作:

 <Storyboard x:Shared="False" x:Key="Storyboard_Locked_ToUnlocked">
相关问题