2010-05-25 78 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>