gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 20:38:01 24 4
gpt4 key购买 nike

我正在尝试使用数据触发器为边框上的线性画笔设置动画,但遇到了无法使用 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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com