Rig*_*ggs 3 wpf visualstatemanager storyboard staticresource
我在 Button 控件的 VisualStateGroup 中有一个 VisualTransition。Storyboard 属性绑定到 StaticResource Storyboard:
<VisualTransition From="MyLock" To="Unlocked" GeneratedDuration="0:0:2.0" Storyboard="{StaticResource Storyboard_Locked_ToUnlocked}"/>
Run Code Online (Sandbox Code Playgroud)
当我使用 VisualStateManager 进入“解锁”状态时,出现以下异常:“System.InvalidOperationException:类型为‘System.Windows.Media.Animation.Storyboard’的指定值必须将 IsFrozen 设置为 false 才能修改。” 故事板中的任何内容都没有修改故事板本身,所以我不确定这意味着什么。
两件奇怪的事。第一,这种情况直到从 VS 2010 迁移到 VS 2012 并安装 .Net 4.5 框架后才开始发生。其次,如果我复制所有代码并将其移动到标签内的 Storyboard 属性本身,则不会出现错误。所以它似乎不是故事板本身的任何东西,只是为此使用 StaticResource 的问题。
在研究时,我唯一能找到的关于订阅故事板的 Completed 事件的错误处理,我不会在任何地方做,除非 VisualStateManager 以某种方式这样做。
在此先感谢您的帮助。
编辑:我还应该补充一点,我想在两个不同的转换中使用它,这就是为什么我更喜欢它是一个静态资源,这样我就不必复制/粘贴 xaml。我注释掉了其中一个转换,但仍然出现错误,所以这也不是我正在共享它的事实。
对于遇到此问题的任何其他人,我找到了解决方案。
只需将 Storyboard 更改为不共享即可为每个动画调用创建它,从而消除此错误。在 Storyboard 上将 x:Shared 设置为 False 以执行此操作:
<Storyboard x:Shared="False" x:Key="Storyboard_Locked_ToUnlocked">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1039 次 |
| 最近记录: |