WPF Margin Толщина - PullRequest
       34

WPF Margin Толщина

0 голосов
/ 30 августа 2011

Фон: я загружаю изображения в панель стека (называемую MainStack), отображаемую горизонтально (для аргументации, 10 изображений) с возможностью просмотра только 4 изображений.Когда я загружаю изображения из списка, я устанавливаю ширину каждого из них равной 300, чтобы они все были в одном поле размера.

Я хочу переместить изображения справа налево с помощью поля панели стека(слева) собственность.Я хочу, чтобы прокрутка оставалась равной ширине каждого изображения (повторяется с задержкой в ​​4 секунды) до тех пор, пока не появится последнее изображение.Вот мой код для анимации Margin:

    Dim result As New Storyboard
    Dim animation As New ThicknessAnimation
    animation.From = MainStack.Margin
    animation.EasingFunction = New PowerEase() With {.EasingMode = EasingMode.EaseInOut, .Power = 3}
    animation.To = New Thickness(-300, 0, 0, 0)
    animation.Duration = New Duration(TimeSpan.FromSeconds(1.5))

    Storyboard.SetTarget(animation, MainStack)
    Storyboard.SetTargetProperty(animation, New PropertyPath("Margin"))
    result.Children.Add(animation)
    result.Begin()

Странная вещь происходит.Панель стека перемещается влево, но только примерно на половину ширины изображения.

Что происходит?!?

/ * edit * / Согласно предложению HB, я 'мы пытались реализовать TranslateTransform, но без особого успеха.

Может кто-нибудь увидеть какие-либо проблемы с этим кодом?

    Dim translatePosition = New Point(300, 0)

    RenderTransform = New TranslateTransform()
    Dim d As New Duration(New TimeSpan(0, 0, 0, 1, 30))
    Dim x As New DoubleAnimation(translatePosition.X, d)

    Storyboard.SetTarget(x, MainStack)
    Storyboard.SetTargetProperty(x, New PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"))

    Dim sb As New Storyboard()
    sb.Children.Add(x)
    sb.Begin()

Кажется, ничего не происходит.Ben

Ответы [ 2 ]

0 голосов
/ 30 августа 2011

Другой вариант для вас - использовать горизонтальный ListBox, тогда вы можете анимировать ScrollViewer.Если вы хотите попробовать это так, вот ссылка, которая может помочь: WPF - Animate ListBox.ScrollViewer.HorizontOffset? .

0 голосов
/ 30 августа 2011

Я думаю, вам следует попробовать поместить всю панель стека на холст и просто анимировать свойство Canvas.Left для прокрутки изображений.

...