我有以下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
使其无法更改以后。
有没有什么方法可以解决这个问题,我真的不知道我的其他选择相同的效果是没有硬编码的颜色,并在代码中做所有的事件。
2条答案
按热度按时间8iwquhpp1#
看起来你不能用
Storyboard.Target
在Resources
中动画一个Brush
。但是您可以设置Style
的Background
(您已经这样做了)并设置此属性的动画。2izufjch2#
您可以从代码后面检查颜色状态,以检查出颜色是否为“冻结”,以防止出现该异常。