2008-10-03 3 views
1
<Grid.Triggers> 
    <EventTrigger RoutedEvent="Border.Loaded"> 
      <EventTrigger.Actions > 
        <BeginStoryboard> 
          <Storyboard x:Name="MyStoryboard" AutoReverse="True" RepeatBehavior="Forever"> 
            <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="border" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"> 
             <SplineColorKeyFrame KeyTime="00:00:01" Value="#FFFAFAFA"/> 
            </ColorAnimationUsingKeyFrames> 
          </Storyboard> 
        </BeginStoryboard> 
      </EventTrigger.Actions> 
    </EventTrigger> 
</Grid.Triggers> 

Как включить \ отключить этот триггер события \ анимацию динамически. Я думал, что могу привязать к IValueConverter и отключить раскадровку, но, похоже, нет подходящего свойства для привязки?Отключение EventTrigger Storyboard динамически

ответ

1

Единственный триггер, доступный в настоящее время в Silverlight, - «Loaded», для всех других событий вам придется написать немного кода. Чтобы использовать эту технику, Storyboards должны перейти в раздел «Ресурсы» вместо «Триггеры», и вы вызовете Begin() на Storyboard из кода.

Если вы делаете шаблонизацию элемента управления, то есть так называемые переходы, которые позволяют запускать раскадровки на основе событий управления, например MouseOver. Это обрабатывается визуальное состояние менеджера:

http://timheuer.com/blog/archive/2008/06/04/silverlight-introduces-visual-state-manager-vsm.aspx

0

Я не был действительно ищет анимацию сворачиваться на основе события. Я хотел сделать это на основе свойства моего бизнес-объекта, что тоже привязывает Im? Я надеялся, что есть что-то вроде Storyboard.Enabled = False!?!?!

0

Вы не можете делать то, что вы запрашиваете, с помощью триггеров в Silverlight. В триггере нет возможности иметь условное выражение. Вы можете подключить событие Loaded, проверить ваше состояние там, и если он встретит запуск раскадровки. Однако нет эквивалента XAML.

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