wpf - 使用数据触发器为线性画笔设置动画

标签 wpf animation storyboard datatrigger lineargradientbrush

我正在尝试使用数据触发器为边框上的线性画笔设置动画,但遇到了无法使用 TargetName 的问题

我的代码如下,有人可以提出解决这个问题的方法吗?

<Border Grid.Row="2" BorderThickness="10" Height="100" Width="100" >
    <Border.BorderBrush>
        <LinearGradientBrush>
            <GradientStop Color="Yellow" Offset="0.0" />
            <GradientStop x:Name="gradient" Color="Orange"  Offset="0.5" />
            <GradientStop Color="Yellow" Offset="1.0" />
        </LinearGradientBrush>
    </Border.BorderBrush>
    <Border.Resources>
        <Style TargetType="Border">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=testBrdrWin, Path=Pulse}" Value="true">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation
                                    Storyboard.TargetName="gradient"
                                    Storyboard.TargetProperty="Offset"
                                    From="0" To="1" Duration="0:0:1"
                                    AutoReverse="True" RepeatBehavior="Forever"
                                    />
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=testBrdrWin, Path=Pulse}" Value="true">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation
                                    Storyboard.TargetName="gradient"
                                    Storyboard.TargetProperty="Offset"
                                    To="0.5" Duration="0:0:01"
                                    AutoReverse="False"
                                    />
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Resources>
</Border>

谢谢

最佳答案

  • 您不能使用 Storyboard.TargetName这里。您必须使用完整的 PropertyPath Syntax .
  • LinearGradientBrush必须在 Style本身。

  • 在这个示例代码中,我删除了所有特殊的东西,因此如果您 MouseOver,它也可以独立工作。 Border .再次根据您的需要调整它。
    <Border BorderThickness="10" Height="100" Width="100" >
        <Border.Resources>
            <Style TargetType="Border">
                <Setter Property="BorderBrush">
                    <Setter.Value>
                        <LinearGradientBrush>
                            <GradientStop Color="Yellow" Offset="0.0" />
                            <GradientStop Color="Red" Offset="0.5" />
                            <GradientStop Color="Yellow" Offset="1.0" />
                        </LinearGradientBrush>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true">
                        <DataTrigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation
                                    Storyboard.TargetProperty="BorderBrush.(GradientBrush.GradientStops)[1].(GradientStop.Offset)"
                                    From="0" To="1" Duration="0:0:1"
                                    AutoReverse="True" RepeatBehavior="Forever"
                                    />
                                </Storyboard>
                            </BeginStoryboard>
                        </DataTrigger.EnterActions>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Resources>
    </Border>
    

    关于wpf - 使用数据触发器为线性画笔设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11842825/

    相关文章:

    objective-c - 将数据传回之前的 Controller

    c# - 类的全局实例

    iphone - 向下滚动时在 HTML5 移动应用程序 (PhoneGap) 中制作动画图像,例如 Google Plus iPhone 应用程序?

    新 Activity 启动或恢复到上一个​​ Activity 时的 Android FAB 动画

    html - css3 动画 - 淡入淡出

    ios - 如何根据 iOS 版本加载多个 Storyboard文件? (5 和 6)

    wpf - 是否可以像在 WPF 中扩展样式一样扩展 ControlTemplate?

    wpf - 如何在 WPF 中突出显示/勾勒 Visual 对象?

    wpf - 如何将 TextBox 的 TextWrapping 属性绑定(bind)到 MenuItem 的 IsChecked 值?

    iphone - dequeueReusableCellWithIdentifier 不返回我的自定义类型的单元格