我的NoOneCares模型有一个DateTemplate,这是一个简单的路径。
现在,当触发DataTrigger时,我希望我的Path闪烁3次(Storyboard,ColorAnimation on Path.Fill)。
每次触发DataTrigger时,下面的示例都会崩溃:
System.InvalidOperationException:无法动画'(0)。(1)'在不可变对象实例上。
但是当我直接设置Fill属性时Fill =" Red" (而不是ValueConverter),它完美无缺。
为什么会这样?我仍然需要转换器将填充设置为正确的颜色:/
<DataTemplate DataType ="{x:Type models:NoOneCares}">
<Path Stroke="White" Data="M 5,15 L5,10 L10,0 L 0,0 L 5,10" >
<Path.Fill>
<MultiBinding Converter="{StaticResource colorConverter}">
<Binding Path="NoOneCares"></Binding>
<Binding Path="NoOneCares"></Binding>
</MultiBinding>
</Path.Fill>
<Path.Style>
<Style TargetType="Path">
<Style.Triggers>
<DataTrigger Binding="{Binding AnimationTrigger}" Value="{StaticResource numberTest}">
<DataTrigger.EnterActions>
<BeginStoryboard Name="fsadf">
<Storyboard>
<ColorAnimationUsingKeyFrames AutoReverse="True" RepeatBehavior="3x" Storyboard.TargetProperty="(Path.Fill).(SolidColorBrush.Color)">
<LinearColorKeyFrame KeyTime="0:0:0.3"
Value="White"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
</DataTemplate>
答案 0 :(得分:1)
似乎转换器返回一个冻结(不可变)画笔,例如Brushes.Red
。您可以通过IsFrozen
属性进行检查。这些物品无法改变。
您应该通过调用Clone()
方法克隆画笔并返回克隆对象 - 它不会被冻结并且可以更改。