当点击窗口中其他位置的某个按钮时,我正在尝试执行元素的动画。
以下是我的尝试:
<Border Grid.Column="0" BorderThickness="1" BorderBrush="Blue"
CornerRadius="30" Margin="4">
<Border.Triggers>
<EventTrigger **SourceName="btnSearch" RoutedEvent="UIElement.MouseUp"**>
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard TargetProperty="Opacity">
<DoubleAnimation From="0" To="1" Duration="0:0:2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Border.Triggers>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ItemsControl x:Name="itmsSearch" ItemsSource="{Binding}" Padding="4"
ItemTemplate="{StaticResource SearchResultItemDT}">
</ItemsControl>
</ScrollViewer>
</Border>
我的EventTrigger的属性似乎有错误的值,导致抛出异常,说明找不到名为btnSearch的元素。
所述按钮位于我窗口的其他位置:
<StackPanel
Height="30"
Orientation="Horizontal"
Margin="5">
<TextBox
x:Name="txtSearch"
Width="650"
FontFamily="Comic Sans MS"
Foreground="Chocolate" />
<Button
x:Name="btnSearch"
Width="100"
Content="Go!"
Click="BtnSearch_Click" />
</StackPanel>
我只是假设将SourceName设置为所需按钮的名称就可以了。但它不起作用:(
答案 0 :(得分:1)
尝试将StoryBoard.TargetName
属性设置为您要设置动画的元素名称。您已设置StoryBoard.TargetProperty
。如果未设置TargetName
属性,则它将采用当前元素。
您无需设置SourceName
。
示例:强>
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Grid.Triggers>
<EventTrigger RoutedEvent="Grid.Loaded">
<BeginStoryboard>
<Storyboard TargetName="jim2" TargetProperty="Opacity">
<DoubleAnimation From="1" To="0" Duration="0:0:4"
AutoReverse="True" RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Grid.Triggers>
<Image Name="jim1" Source="jim1.gif"/>
<Image Name="jim2" Source="jim2.gif"/>
</Grid>
答案 1 :(得分:0)
您可以使用visualstatemanager来制作动画(将vsm添加到应该设置动画的控件(或任何父级))。您可以在按钮的点击处理程序中启动动画。
VisualStateManager.GoToElementState(this.myControlToAnimate, "MyAnimationState", true)