我正在弄乱Silverlight试图找出如何让它打勾,并且有一件事我似乎没有接受,关于故事板和获得按需启动的行为。下面描述了一个蓝色椭圆,它在Y轴上具有变换Y轴投影,因此当它被触发时,它看起来像一个在其垂直轴上以3D旋转的圆。单击椭圆时会触发该行为。如果RepeatBehavior设置为3x,则重复三次并停止。
我想弄清楚的是每次点击椭圆时如何重新触发此行为,因为行为在第一次运行后不会再次触发。我尝试通过创建MouseLeftButtonDown事件并使用
填充它来再次触发它Storyboard1.Begin();
但这没有任何作用。事实上,如果我在那里设置一个断点,它确实执行,但没有效果。这是Xaml:
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" mc:Ignorable="d"
x:Class="UsingStoryboards.MainPage"
Width="640" Height="480">
<UserControl.Resources>
<Storyboard x:Name="Storyboard1" RepeatBehavior="3x">
<DoubleAnimation Duration="0:0:2" To="160" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName="ellipse" d:IsOptimized="True"/>
</Storyboard>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<ei:ChangePropertyAction PropertyName="Background">
<ei:ChangePropertyAction.Value>
<SolidColorBrush Color="#FFE50D0D"/>
</ei:ChangePropertyAction.Value>
</ei:ChangePropertyAction>
</i:EventTrigger>
</i:Interaction.Triggers>
<Ellipse x:Name="ellipse" Fill="#FF000BF5" HorizontalAlignment="Left" Height="80" Margin="54,75,0,0" Stroke="Black" VerticalAlignment="Top" Width="80" MouseLeftButtonDown="ellipse_MouseLeftButtonDown">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<ei:ControlStoryboardAction Storyboard="{StaticResource Storyboard1}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Ellipse.Projection>
<PlaneProjection/>
</Ellipse.Projection>
</Ellipse>
</Grid>
</UserControl>
答案 0 :(得分:1)
尝试在动画上指定“发件人”值。你能用同样的价值制作房产的动画吗?
答案 1 :(得分:1)
KeithMahoney是对的。您正在从当前值动画到160度。
故事板在结束时不会停止。除非您明确停止,否则它们会保留最后一个值。
这意味着第二个周期的动画从160到160,所以它什么都不做。
要修复,请按照建议使用 From 设置起始值0,或将鼠标事件处理程序更改为:
private void ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Storyboard1.Stop();
Storyboard1.Begin();
}