WPF:故事板的样式返回“无法在不可变对象实例上对‘颜色’进行动画处理。”

2024-05-09

我有以下 XAML:

<UserControl.Resources>
    <SolidColorBrush x:Key="Brush"></SolidColorBrush>

    <Style TargetType="{x:Type StackPanel}" x:Key="ColourChangingStyle">
        <Setter Property="Background" Value="{StaticResource Brush}" />

        <Style.Triggers>
            <DataTrigger Binding="{Binding Path='Stage'}" Value="1">
                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation Storyboard.Target="{StaticResource Brush}"
                              Storyboard.TargetProperty="Color" From="{StaticResource FirstColor}" To="{StaticResource FinishedColor}" Duration="0:0:10" BeginTime="0:0:0"/>
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>

<StackPanel x:Name="InfoPanel" Orientation="Vertical"  Margin="1,2" Style="{DynamicResource ColourChangingStyle}">
 ...
</StackPanel>

我不断收到同样的错误:

无法在不可变对象实例上设置“颜色”动画

这是刷子。我查了一下问题,认为这与将画笔绑定到StackPanel使其以后无法更改。

有没有办法解决这个问题,我真的不知道在没有硬编码颜色并在代码中执行所有事件的情况下,达到相同效果的其他选项是什么。


看来你不能动画化Brush in Resources with Storyboard.Target。但你可以设置Background你的Style(您已经完成了此操作)并为该属性设置动画。

<ColorAnimation Storyboard.TargetProperty="Background.Color"
                From="{StaticResource FirstColor}"
                To="{StaticResource FinishedColor}" 
                Duration="0:0:10" BeginTime="0:0:0" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF:故事板的样式返回“无法在不可变对象实例上对‘颜色’进行动画处理。” 的相关文章

随机推荐