使用StaticResource作为VisualTransition的情节提要时出错

问题描述 投票:2回答:1

我在一个VisualStateGroup内部有一个VisualTransition,用于Button控件。故事板属性绑定到StaticResource故事板:

<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并安装.Net 4.5框架后,这种情况才开始发生。其次,如果我复制所有代码并将其移到标签内的Storyboard属性本身中,则不会收到错误。因此,它似乎不是情节提要板中的任何内容,仅是为此使用StaticResource的问题。

进行研究时,我发现有关错误的唯一问题是订阅情节提要的Completed事件,除非VisualStateManager以某种方式进行,否则我不会在任何地方进行此操作。

提前感谢您的帮助。

编辑:我还应该补充一点,我想在两个不同的过渡中使用它,这就是为什么我更希望它是一个StaticResource,所以我不必复制/粘贴xaml。我注释了其中一个转换,但仍然出现错误,因此也不是我也要共享它。

wpf storyboard visualstatemanager staticresource
1个回答
4
投票

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

只需将故事板更改为不共享,即可为每个动画调用创建故事板,从而避免了此错误。在情节提要板上将x:Shared设置为False即可:

 <Storyboard x:Shared="False" x:Key="Storyboard_Locked_ToUnlocked">
© www.soinside.com 2019 - 2024. All rights reserved.