Свойство XAML за стартиране на анимация на сценария при зареждане

Е, както подсказва заглавието:

Имам сценарий и искам неговата анимация да започне без намесата на код. Причината за това изискване е, че се насочвам към Silverlight Embedded и в момента съм твърде мързелив, за да компилирам и приложението си. И като се замисля, ще бъде по-лесно да промените анимацията едва в бъдеще.

XAML има ли свойство да накара сценария да се стартира веднага щом xaml се зареди?


person Shaihi    schedule 28.12.2009    source източник


Отговори (1)


Можете да използвате събитието 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, за да започнем нашата сценария и добавяме Storyboard. Тази анимация ще използва DoubleAnimation на свойството Opacity, което означава, че за период от 5 секунди непрозрачността постепенно ще избледнее до нула и обратно (свойство AutoReverse) и ще прави това завинаги (свойството RepeatBehaviour).

person Arcturus    schedule 28.12.2009
comment
Отидох направо в SO, без да проверя MSDN (срам за мен). От MSDN изглежда, че няма нищо подобно на поведението, което търся. Бордът с истории трябва да започне от код... Вашето предложение все още включва писане/промяна на код. - person Shaihi; 28.12.2009
comment
ако XAML може да се отчете като код, тогава да :) Ще трябва да напишете малко XAML, за да работи;) - person Arcturus; 28.12.2009
comment
ДОБРЕ. Сигурно съм бил глупав :(. Ще прочета как да използвам събития в XAML и ще се върна, ако реши проблема ми или не. Благодаря. - person Shaihi; 28.12.2009
comment
все още се мъча. Нов за XAML и Silverlight. можете ли да публикувате XAML пример за това как да използвате това? - person Shaihi; 28.12.2009
comment
Добавен е примерът с малко обяснение.. Надявам се това да помогне :) - person Arcturus; 28.12.2009
comment
Благодаря много за изчерпателния и отличен отговор! Работи като чар. - person Shaihi; 28.12.2009