2010-05-25 94 views
0

我有两个xaml文件之一是MainWindow.xaml和其他是userControl EditTaskView.xaml。 在MainWindow.xaml中,它由列表框组成,当双击列表框中的任何项时,它将从EditView userControl中显示其他窗口(编辑窗口)。我试图在每次双击列表框中的任何项目时为此userControl设置动画。我在userControl中添加了一些动画,但动画只能运行一次。如何在每次单击列表框中的任何项目时使我的动画运行?在WPF中动画UserControl?

MainWindow.xaml

<ListBox x:Name="lstBxTask" Style="{StaticResource ListBoxItems}" MouseDoubleClick="lstBxTask_MouseDoubleClick"> 
     <ListBox.ItemTemplate>    
      <DataTemplate>      
       <StackPanel> 
        <Rectangle Style="{StaticResource LineBetweenListBox}"/> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding Taskname}" Style="{StaticResource TextInListBox}"/> 
         <Button Name="btnDelete" Style="{StaticResource DeleteButton}" Click="btnDelete_Click"/>              
        </StackPanel> 
       </StackPanel>      
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
    <ToDoTask:EditTaskView x:Name="EditTask" Grid.Row="1" Grid.RowSpan="2" Grid.ColumnSpan="2" Visibility="Collapsed"/> 

在主窗口的代码,有鼠标双击事件,改变EditTaskView的知名度可见。

对此提出建议?

回答

0

您还没有向我们展示您的动画。通常情况下,动画确实发挥每次触发事件:

<UserControl.Resources> 
    <Storyboard x:Key="Storyboard1"> 
     <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" Storyboard.TargetName="LayoutRoot"> 
      <EasingColorKeyFrame KeyTime="0" Value="#FFB62A2A"/> 
      <EasingColorKeyFrame KeyTime="0:0:4" Value="#FF2A32B6"/> 
     </ColorAnimationUsingKeyFrames> 
    </Storyboard> 
</UserControl.Resources> 
<UserControl.Triggers> 
    <EventTrigger RoutedEvent="Control.MouseDoubleClick"> 
     <BeginStoryboard Storyboard="{StaticResource Storyboard1}"/> 
    </EventTrigger> 
</UserControl.Triggers> 
0

感谢bitbonk,你的代码真正的帮助。

我想我弄清楚我的问题是什么。我将EventTrigger作为FrameworkElement.Loaded而不是Control.MouseDoubleClick。

反正代码如下所示:

<Storyboard x:Key="AnimateEditView"> 
     <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" Storyboard.TargetName="EditTask"> 
      <EasingThicknessKeyFrame KeyTime="0" Value="0"> 
       <EasingThicknessKeyFrame.EasingFunction> 
        <ExponentialEase EasingMode="EaseOut"/> 
       </EasingThicknessKeyFrame.EasingFunction> 
      </EasingThicknessKeyFrame> 
      <EasingThicknessKeyFrame KeyTime="0:0:1.6" Value="0"/> 
     </ThicknessAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="EditTask"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="0"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1.6" Value="1"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 

<Window.Triggers> 
     <EventTrigger RoutedEvent="FrameworkElement.Loaded"> 
      <BeginStoryboard Storyboard="{StaticResource headerAnimation}"/> 
      <BeginStoryboard Storyboard="{StaticResource textBxAnimation}"/> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="Control.MouseDoubleClick"> 
      <BeginStoryboard Storyboard="{StaticResource AnimateEditView}"/> 
     </EventTrigger> 
    </Window.Triggers>