2012-05-31 2 views
0

У меня есть раскадровка, которая оживляет ширину изображения. Я создал анимацию с Expression Blend:Место раскадровки в стиле или datatemplate

<Storyboard x:Key="Storyboard1"> 
    <DoubleAnimationUsingKeyFrames 
      Storyboard.TargetProperty="(FrameworkElement.Width)" 
      Storyboard.TargetName="imageFoo"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="335"> 
       <EasingDoubleKeyFrame.EasingFunction> 
        <BackEase EasingMode="EaseOut"/> 
       </EasingDoubleKeyFrame.EasingFunction> 
      </EasingDoubleKeyFrame> 
    </DoubleAnimationUsingKeyFrames> 
</Storyboard> 

Проблема заключается в том, что я хочу, чтобы назначить эту раскадровку для всех изображений в моем приложении не только для изображения imageFoo. Я хотел бы начать эту анимацию, когда изображение MouseEnters. Как я могу это сделать?

ответ

2

Вы должны удалить имя цели из раскадровки, а также переместить спусковой крючок в стиль, там нет коды позади требуется, чтобы сделать это к счастью

В вашем App.xaml файла (или в любой коллекции ресурсов) ,

<Application.Resources> 
     <Style TargetType="{x:Type Image}"> 
      <Style.Triggers> 
       <EventTrigger RoutedEvent="MouseEnter"> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)"> 
           <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="335"> 
            <EasingDoubleKeyFrame.EasingFunction> 
             <BackEase EasingMode="EaseOut"/> 
            </EasingDoubleKeyFrame.EasingFunction> 
           </EasingDoubleKeyFrame> 
          </DoubleAnimationUsingKeyFrames> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Style.Triggers> 
     </Style> 
    </Application.Resources> 

Объявив стиль без каких-либо х: Key и просто давая TargetType вы в основном, говоря, что WPF он должен применяться к каждому элементу в визуальном дереве с этим типом.

Смежные вопросы