【问题标题】:wpf animation and indirect targeting: Cannot resolve all property referenceswpf 动画和间接定位:无法解析所有属性引用
【发布时间】:2012-10-09 16:46:27
【问题描述】:

我有点困惑,所以请帮帮我。

我有一个简单的 wpf 动画:

<DropShadowEffect Color="Transparent" ShadowDepth="0" Opacity="0.75" x:Key="Shiny" x:Shared="False"/>

<Storyboard x:Key="ShinyAnim" x:Shared="False">
    <ColorAnimation From="Transparent" To="Red" Duration="0:0:1" Storyboard.TargetProperty="(Effect).Color" />
    <DoubleAnimationUsingKeyFrames RepeatBehavior="Forever" Storyboard.TargetProperty="(Effect).BlurRadius" AutoReverse="True">
        <DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="1"/>
        <DiscreteDoubleKeyFrame KeyTime="0:0:0.15" Value="2"/>
        <DiscreteDoubleKeyFrame KeyTime="0:0:0.3" Value="3"/>
        <DiscreteDoubleKeyFrame KeyTime="0:0:0.45" Value="4"/>
        <DiscreteDoubleKeyFrame KeyTime="0:0:0.6" Value="5"/>
        <DiscreteDoubleKeyFrame KeyTime="0:0:0.75" Value="6"/>
        <DiscreteDoubleKeyFrame KeyTime="0:0:0.9" Value="7"/>
        <DiscreteDoubleKeyFrame KeyTime="0:0:1.05" Value="8"/>
        <DiscreteDoubleKeyFrame KeyTime="0:0:1.2" Value="9"/>
        <DiscreteDoubleKeyFrame KeyTime="0:0:1.35" Value="10"/>
        <DiscreteDoubleKeyFrame KeyTime="0:0:1.5" Value="11"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

<Style x:Key="AnimShape" TargetType="Shape">
<Setter Property="Stroke" Value="DarkGray"/>
<Setter Property="Effect" Value="{StaticResource Shiny}/>
<Style.Triggers>
    <DataTrigger Binding="{Binding HasChannelWarnings}" Value="True">
        <Setter Property="Stroke" Value="Red"/>
        <DataTrigger.EnterActions>
            <BeginStoryboard x:Name="ChannelAnim" Storyboard="{StaticResource ShinyAnim}"/>
        </DataTrigger.EnterActions>
        <DataTrigger.ExitActions>
            <RemoveStoryboard BeginStoryboardName="ChannelAnim"/>
        </DataTrigger.ExitActions>
    </DataTrigger>
</Style.Triggers>
</Style>

如果我使用这种样式加载控件,而 HasChannelWarnings==false - 一切正常:当属性更改时 - 我得到闪亮的动画。但是,如果我加载控件,当 HasChannelWarnings==true 我得到一个错误:

无法解析属性路径“(Effect).Color”中的所有属性引用。验证适用的对象是否支持这些属性。

有人能解释一下这是怎么回事吗?触发器会在效果器之前触发吗?如果是,如何正确应用这个动画?

【问题讨论】:

    标签: .net wpf animation


    【解决方案1】:

    我通过将触发器更改为多触发器解决了这个问题

    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding HasChannelWarnings}" Value="True">
        <Condition Binding="{Binding Effect, RelativeSource={RelativeSource Mode=Self}, Converter={Converters:IsNullConverter}}" Value="False"/>
    </MultiDataTrigger.Conditions>
    

    但我不太喜欢这种解决方案。一定有更好的办法。

    【讨论】:

      猜你喜欢
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      相关资源
      最近更新 更多