Удалить анимацию Silverlight - PullRequest
       8

Удалить анимацию Silverlight

3 голосов
/ 02 марта 2010

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

Вот код раскадровки, который я использую для анимации сетки, называемой underGrid. underGrid - это базовая сетка, к которой я применяю масштаб и смещение местоположения в ответ на ввод данных пользователем от мыши, чтобы они могли масштабировать и перемещать сетку в режиме реального времени. Раскадровка ResetGrid, приведенная ниже, просто анимирует текущие значения масштаба и местоположения обратно в масштаб {1, 1} и местоположение {0, 0}, сбрасывая представление для пользователя. Я хотел иметь возможность применять эту анимацию всякий раз, когда пользователь нажимает кнопку сброса, но она замораживает преобразования Масштаб и Трансляция после однократного запуска (как обсуждено здесь: http://msdn.microsoft.com/en-us/library/aa970493.aspx). Это означает, что когда пользователь затем использует мышь чтобы переместить сетку, она не двигается. Я перепробовал все, что мог придумать, чтобы анимация не влияла на свойства зависимостей. Я пытался перехватить событие Completed и попытаться (среди прочего) остановить анимация, ища анимацию до 0, проходя через ResetGrid Children и используя StoryBoard.SetTarget (). Я также пытался установить FillBehavior. нажата и не может быть снова установлена ​​в коде пользователя.

Может кто-нибудь предложить что-нибудь, что я могу попробовать, что я не перечислил выше (резко или иначе :))? Все, что я хочу, это чтобы анимация полностью остановилась и отсоединилась при завершении.

Раскадровка XAML:

  <Storyboard x:Name="ResetGrid">
   <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="underGrid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
    <EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0">
     <EasingDoubleKeyFrame.EasingFunction>
      <CubicEase EasingMode="EaseInOut"/>
     </EasingDoubleKeyFrame.EasingFunction>
    </EasingDoubleKeyFrame>
   </DoubleAnimationUsingKeyFrames>
   <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="underGrid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
    <EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0">
     <EasingDoubleKeyFrame.EasingFunction>
      <CubicEase EasingMode="EaseInOut"/>
     </EasingDoubleKeyFrame.EasingFunction>
    </EasingDoubleKeyFrame>
   </DoubleAnimationUsingKeyFrames>
   <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="underGrid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
    <EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1">
     <EasingDoubleKeyFrame.EasingFunction>
      <CubicEase EasingMode="EaseInOut"/>
     </EasingDoubleKeyFrame.EasingFunction>
    </EasingDoubleKeyFrame>
   </DoubleAnimationUsingKeyFrames>
   <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="underGrid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
    <EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1">
     <EasingDoubleKeyFrame.EasingFunction>
      <CubicEase EasingMode="EaseInOut"/>
     </EasingDoubleKeyFrame.EasingFunction>
    </EasingDoubleKeyFrame>
   </DoubleAnimationUsingKeyFrames>
  </Storyboard>

Ответы [ 2 ]

0 голосов
/ 14 августа 2010

Я тоже сталкивался с этой проблемой раньше ... проверьте эту ветку на Silverlight.Net, которая, я думаю, вам может пригодиться:

http://forums.silverlight.net/forums/t/68888.aspx

0 голосов
/ 03 августа 2010

будет ли работать ResetGrid.stop ()? Я использовал его в своих приложениях, и анимация была отключена сразу. animation.stop остановится и сбросится, в то время как animation.pause просто остановится на том месте, где произошла ошибка если нет, вы можете поставить другую анимацию продолжительностью 0, вызвать эту анимацию, чтобы вернуть свойство

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...