这是一种可行的方法:
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName="myAnimatedBrush"
Storyboard.TargetProperty="Color"
From="Red" To="Blue" Duration="0:0:7" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
但是,假设我有:
<Storyboard x:Name="name">
<ColorAnimation
Storyboard.TargetName="myAnimatedBrush"
Storyboard.TargetProperty="Color"
From="Red" To="Blue" Duration="0:0:7" />
</Storyboard>
并想重复使用几次。
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
//
// <---> what whould I put here??
//
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
我只对XAML感兴趣,而不对c#感兴趣。
编辑:
使用答案中的建议后,出现错误:
属性{StaticResource myStoryboard}的值超出范围。
最佳答案
使其成为资源并使用StaticResource
对其进行调用。
[考虑所有资源都在App.xaml中定义]
<Application.Resources>
<Storyboard x:Key="MyStoryboard">
....
</Storyboard>
</Application.Resources>
然后,在按钮的实例
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard Storyboard="{StaticResource MyStoryboard}"
x:Name="MyStoryboard_Begin"/>
</EventTrigger>
<Button.Triggers>
注意:
x:Name
不是必需的,但是如果您要确保在运行另一个故事板之前确保此故事板已停止,则很有用:在另一个触发器中,请使用StopStoryboard
。关于silverlight - 重用现有的 Storyboard ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8055302/