2010-05-25 8 views
0

У меня есть два файла xaml один: MainWindow.xaml, а другой - userControl EditTaskView.xaml. В MainWindow.xaml он состоит из списка и при двойном щелчке по любому элементу списка, он отображает другое окно (окно редактирования) из EditView userControl. Я пытаюсь анимировать этот userControl каждый раз, когда любой элемент из списка дважды щелкнут. Я добавил анимацию в userControl, но анимация запускается только один раз. Как я могу запускать анимацию каждый раз всякий раз, когда нажимается какой-либо элемент из списка?Анимация UserControl в WPF?

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"/> 

В коде MainWindow, есть мышь двоеборье щелчок, который изменяет видимость 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> 
Смежные вопросы