2011-11-12 67 views
3

我有Silverlight動畫(workig 100%確定):移動Silverlight的動態動畫WPF

<UserControl.RenderTransform> 
    <CompositeTransform/> 
</UserControl.RenderTransform> 

,並在代碼:

Storyboard.SetTargetProperty(myDoubleAnimation1, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateX)")); 
Storyboard.SetTargetProperty(myDoubleAnimation2, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateY)")); 

我在WPF試過這樣:

<UserControl.RenderTransform> 
    <TranslateTransform /> 
</UserControl.RenderTransform> 

和:

Storyboard.SetTargetProperty(myDoubleAnimation1, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)")); 
Storyboard.SetTargetProperty(myDoubleAnimation2, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.Y)")); 

但它崩潰,但路徑(UIElement.RenderTransform)。(TranslateTransform.X)無法解析或像這樣的例外..你能幫忙嗎?

+0

我不認爲這有什麼不同,但你可以嘗試用你的PropertyPath中的「UserControl」替換「UIElement」嗎? –

+0

與之前效果相同 – deha

回答

1

解決方案:

後臺代碼:

Storyboard.SetTargetProperty(myDoubleAnimation1, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)")); 
Storyboard.SetTargetProperty(myDoubleAnimation2, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.Y)")); 

標記:

<UserControl.RenderTransform> 
    <TransformGroup> 
     <TranslateTransform /> 
    </TransformGroup> 
</UserControl.RenderTransform> 
+0

這並不能解釋它爲什麼崩潰。從我看到的情況來看,它確實不會崩潰,因爲OP的當前方法對我來說看起來很好。 –

+0

好吧,它開始工作後,這個變化,它看起來像添加兒童是關鍵 – deha

1

正如你可能猜想有WPF中沒有CompositeTransform。創建Transforms的標準方法是創建一個TransformGroup。然後添加四種類型的變換。

<UserControl.RenderTransform> 
<TransformGroup> 
    <TranslateTransform /> 
    <ScaleTransform /> 
    <SkewTransform /> 
    <RotateTransform /> 
</TransformGroup> 

然後animatation指變換使用索引語法。

(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X) 
+0

在https://msdn.microsoft.com/en-us/library/system.windows.media.compositetransform%結束的例子28v = vs.95%29.aspx也很有幫助(顯示如何在XAML中使用TransformGroup或CompositeTransform) –