WPF:样式中的故事板返回“无法在不可变对象实例上设置动画'颜色'。”

时间:2013-01-17 16:07:38

标签: wpf xaml animation user-controls stackpanel

我有以下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>

我一直得到同样的错误:

  

无法在不可变对象实例上设置'Color'动画

这是画笔。我查找了这个问题,并认为这与将画笔绑定到StackPanel之间有关,使其无法在以后更改。

有什么方法可以解决这个问题,我完全不知道我的其他相同效果的选项是没有硬编码颜色,并且在代码中执行所有事件。

1 个答案:

答案 0 :(得分:6)

您似乎无法使用BrushResources中的Storyboard.Target设置动画。但您可以设置Background Style(您已经完成此操作)并为此属性设置动画。

<ColorAnimation Storyboard.TargetProperty="Background.Color"
                From="{StaticResource FirstColor}"
                To="{StaticResource FinishedColor}" 
                Duration="0:0:10" BeginTime="0:0:0" />