2009-12-28 4 views
3

Ну, как подсказывает название:XAML свойства начать раскадровку анимации при загрузке

У меня есть раскадровка, и я хочу это анимация, чтобы начать без вмешательства кода. Причиной этого требования является то, что я нацелен на Silverlight Embedded, и теперь я слишком ленив, чтобы перекомпилировать мое приложение. И, подумав об этом, будет легче изменить анимацию только в будущем.

Имеет ли XAML свойство запуска раскадровки сразу после загрузки xaml?

ответ

14

Вы можете использовать Loaded событие, чтобы начать раскадровки

См MSDN для примера: Storyboard (Silverlight)

поднято пример из MSDN:

<Canvas 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Rectangle 
    x:Name="MyAnimatedRectangle" 
    Width="100" 
    Height="100" 
    Fill="Blue"> 
    <Rectangle.Triggers> 

     <!-- Animates the rectangle's opacity. 
      This is the important part, the EventTrigger which will start our animation --> 

     <EventTrigger RoutedEvent="Rectangle.Loaded"> 
     <BeginStoryboard> 
      <Storyboard> 
      <DoubleAnimation 
       Storyboard.TargetName="MyAnimatedRectangle" 
       Storyboard.TargetProperty="Opacity" 
       From="1.0" To="0.0" Duration="0:0:5" AutoReverse="True" RepeatBehavior="Forever" /> 
      </Storyboard> 
     </BeginStoryboard> 
     </EventTrigger> 
    </Rectangle.Triggers> 
    </Rectangle> 
</Canvas> 

объекта Rectangle имеет свойства. В свойстве Triggers мы определили EventTrigger, который будет срабатывать, когда это событие произойдет. Мы выбираем событие Rectangle.Loaded, что означает, что он будет срабатывать при загрузке;).

Мы добавили свойство BeginStoryboard, чтобы начать нашу раскадровку и добавить раскадровку. Эта анимация будет использовать свойство DoubleAnimation on the Opacity, что означает, что в течение 5 секунд непрозрачность постепенно исчезает до нуля и обратно (свойство AutoReverse), и она будет делать это Forever (свойство RepeatBehaviour).

+0

Я пошел прямо к SO без проверки MSDN (позор на меня). Из MSDN кажется, что нет ничего похожего на поведение, которое я ищу. Сценарий должен начинаться с кода ... Ваше предложение по-прежнему связано с записью/сменой кода. – Shaihi

+0

, если XAML можно отнести к коду, тогда да :) Вам нужно будет написать немного XAML, чтобы заставить его работать;) – Arcturus

+0

OK. Я, должно быть, был толстым :(Я буду читать о том, как использовать события в XAML и возвращаться на случай, если он решает мою проблему или нет. Спасибо. – Shaihi

2
<UserControl x:Class="SOSMVVM.AniM11" 
    xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' 
    xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' 
    xmlns:d='http://schemas.microsoft.com/expression/blend/2008' 
    xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006' 
    mc:Ignorable='d' 
    d:DesignWidth='640' 
    d:DesignHeight='480'> 


    <StackPanel Margin="5"> 
     <Rectangle Name="rect3" Fill="Blue" Margin="2" Width="20" 
     Height="20" HorizontalAlignment="Left" /> 
     <Button Margin="2,20,0,0" HorizontalAlignment="Left" 
     Content="Start Animations" Width="100"> 
      <Button.Triggers> 
       <EventTrigger RoutedEvent="Button.Click"> 
        <EventTrigger.Actions> 
         <BeginStoryboard> 
          <Storyboard> 

           <DoubleAnimation 
        Storyboard.TargetName="rect3" Storyboard.TargetProperty="Width" 
        From="20" To="400" Duration="0:0:10" SpeedRatio="0.5" /> 


          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger.Actions> 
       </EventTrigger> 
      </Button.Triggers> 
     </Button> 
    </StackPanel> 


</UserControl> 
+2

Объяснение помогло бы .. –

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