8,757
社区成员
发帖
与我相关
我的任务
分享 <Canvas Background="AliceBlue">
<Ellipse x:Name="ellipse1" Fill="GreenYellow"
Width="150" Height="200" />
<Button x:Name="bt" Content="Button" HorizontalAlignment="Left" Margin="238,151,0,0" VerticalAlignment="Top" Width="75" >
<Button.Triggers>
<!--创建触发器-->
<EventTrigger RoutedEvent="Canvas.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="ellipse1"
Storyboard.TargetProperty="Width"
From="150" To="300" Duration="0:0:3" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
</Canvas>
备注 Silverlight 支持元素上的 EventTrigger 和 object.Triggers 属性元素使用率,但当前应用程序不支持使用此技术。 EventTrigger 仅能支持 Loaded 事件的一次触发操作(在 EventTrigger.RoutedEvent 属性中命名触发事件。)这就使 EventTrigger 不适合大多数运行时交互。 此时不使用 EventTrigger 和 Triggers 属性,而是考虑以下两种备选方法之一: 要对不属于控件的对象的属性进行动画处理,请将演示图板放在页面或应用程序的常规 Resources 中。 然后在放置"Triggers"的元素上分配一个事件处理程序。 响应相关事件时,该事件处理程序应从资源字典中检索演示图板。 然后,您对检索到的 Storyboard 调用 Begin。 要对属于控件的对象的属性进行动画处理(派生自 Control),请使用 VisualStateManager 技术,并通过调用 GoToState 基于控件的状态或输入信息运行适当的动画。
<UserControl.Resources>
<Storyboard x:Name="myStoryboard">
<DoubleAnimation Storyboard.TargetName="ellipse1" Storyboard.TargetProperty="Width" From="150" To="300" Duration="0:0:3"/>
</Storyboard>
</UserControl.Resources>
<Canvas Background="AliceBlue">
<Ellipse x:Name="ellipse1" Fill="GreenYellow" Width="150" Height="200" />
<Button x:Name="bt" Content="Button" HorizontalAlignment="Left" Margin="238,151,0,0" VerticalAlignment="Top" Width="75" Click="bt_Click" />
</Canvas>
private void bt_Click(object sender, RoutedEventArgs e)
{
myStoryboard.Begin();
}