【问题标题】:ColorAnimation doesn't work if TargetProperty is set using Converter?如果使用 Converter 设置 TargetProperty,ColorAnimation 不起作用?
【发布时间】:2016-10-11 04:45:44
【问题描述】:

我的 NoOneCares 模型有一个 DateTemplate,它是一个简单的路径。

现在,当触发 DataTrigger 时,我希望我的路径闪烁 3 次(故事板、Path.Fill 上的 ColorAnimation)。

每次触发 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>

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    似乎转换器返回一个冻结(不可变)的画笔,例如Brushes.Red。您可以通过IsFrozen 属性进行检查。此类对象无法更改。

    您应该通过调用Clone() 方法克隆画笔并返回克隆的对象 - 它没有被冻结并且可以更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多