Почему анимация Canvas.SetTop не работает должным образом? - PullRequest
0 голосов
/ 18 марта 2012

У меня есть этот xaml:

    <Canvas Width="75" Height="75">
        <Button x:Name="button" Background="Olive" Canvas.Left="0" Canvas.Top="0" Width="75" Height="75" Click="button_Click"/>
    </Canvas>

И этот код позади:

    Private Sub button_Click(ByVal sender as Object, ByVal e as System.Windows.RoutedEventArgs)
        Canvas.SetTop(sender, -75)

        Dim sb1 As New Storyboard
        Dim da1 As New DoubleAnimationUsingKeyFrames
        da1.BeginTime = TimeSpan.FromSeconds(0)
        Storyboard.SetTargetName(da1, CType(sender, Button).Name)
        Storyboard.SetTargetProperty(da1, New PropertyPath(Canvas.TopProperty))

        Dim t1 As Double = Canvas.GetTop(sender)
        da1.KeyFrames.Add(New SplineDoubleKeyFrame(t1 + 75, TimeSpan.FromSeconds(0.2)))
        sb1.Children.Add(da1)

        BeginStoryboard(sb1)        
    End Sub

Когда я нажимаю кнопку в первый раз, она правильно поднимается на 75 и анимируется обратно до 0, но когда я нажимаю кнопку снова, она просто оживляет вниз на 75. Почему она пропускает строку Canvas.SetTop и идет прямо к анимации? И как это исправить?

1 Ответ

1 голос
/ 19 марта 2012

Используйте этот код (он находится в C #) перед Canvas.SetTop

(sender as UIElement).BeginAnimation(Canvas.TopProperty, null);

Это позволит избежать анимации, переопределяющей значение Canvas.TopProperty

Эта ссылка поможет вам

http://joshsmithonwpf.wordpress.com/2008/08/21/removing-the-value-applied-by-an-animation/

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