2011-08-30 59 views
0

背景: 我加載的圖象分成一堆疊面板(稱爲MainStack)水平顯示(爲了討論起見,10個圖像)僅在4倍視圖的圖像空間。當我從列表中加載圖像時,我將每個圖像的寬度設置爲300,以使它們都處於相同大小的框中。WPF保證金厚度

我想將圖像從向右移動使用堆疊面板的保證金(左)財產離開了。我希望左邊滾動的外觀與每幅圖像的寬度完全相同(以4秒的延遲循環),直到最後一幅圖像出現爲止。這裏是我的代碼爲保證金動畫:

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() 

奇怪的事情正在發生。堆疊面板正在向左移動,但只有圖像寬度的一半左右。

這是怎麼回事?!?

/*編輯*/ 按H.B.建議,我試圖實現一個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() 

似乎沒有什麼事情發生。 本

+0

爲什麼不應用TranslateTransform併爲其生成動畫? –

+0

嗨H.B.感謝評論,我正在研究它。你能夠建議我可以使用的任何代碼嗎?我正在閱讀TranslateTransform與Storyboard沒有很好地配合。 – Ben

+0

這是我的新聞,誰說的? –

回答

0

我認爲你應該嘗試把你的整個堆棧面板放在一個畫布中,並且只是動畫Canvas.Left屬性來滾動圖像。