2013-01-03 41 views
0

在我的Windows Phone應用程序中,我有一個從UserControl繼承的父類文件,以及從該類繼承的多個對象。所以父類Parent.cs不是部分的。 子類是xaml對象,帶有xaml文件和cs文件。Windows phone:從父類文件動畫usercontrol

我想爲所有孩子啓用動作,因此正試圖在父類中實現這一點。

這裏是我的代碼:

this.MoveObjectX = new DoubleAnimation(); 
    this.MoveObjectY = new DoubleAnimation(); 
    this.MoveObjectX.Duration = TimeSpan.FromMilliseconds(100); 
    this.MoveObjectY.Duration = TimeSpan.FromMilliseconds(100); 

    this.RenderTransform = new CompositeTransform(); 

    Storyboard.SetTarget(this.MoveObjectX, this.RenderTransform); 
    Storyboard.SetTarget(this.MoveObjectY, this.RenderTransform); 

    Storyboard.SetTargetProperty(
      this.MoveObjectX, 
      new PropertyPath(CompositeTransform.TranslateXProperty)); 
    Storyboard.SetTargetProperty(
      this.MoveObjectY, 
      new PropertyPath(CompositeTransform.TranslateYProperty)); 

    this.storyboardMoveObject = new Storyboard(); 
    this.storyboardMoveObject.Children.Add(this.MoveObjectX); 
    this.storyboardMoveObject.Children.Add(this.MoveObjectY); 

    this.storyboardMoveObject.Completed += new EventHandler(storyboardMoveObject_Completed); 

但它不工作。代碼符合並運行,但孩子不會移動。 我必須補充說,在每個孩子中,我設置了來自和來自數字的雙動畫。

感謝您的幫助。

+0

這是哪裏的代碼中找到,你如何稱呼呢? –

+0

這段代碼被正確調用,但實際上我不確定這個架構可以工作:擴展UserControl的Parent.cs(不是部分),以及擴展Parent.cs的子代(xaml和代碼背後,部分)。我的意思是它的作品,但顯然不與故事板和CompositeTransform。我真的不知道在這裏可以做什麼。 – Nicolas

+0

@no,我的問題是,如果這段代碼是在虛擬方法,受保護方法或其中 –

回答

0

如果您在註釋中提到的執行移動的代碼是從父項的構造函數調用的,則需要在子項的構造函數中調用父項的構造函數。它不是自動的,這就是爲什麼你的代碼永遠不會被這些孩子調用。

來叫父類的構造最簡單的方法是追加基地()

public child():base() { ... } 
+0

感謝您的回答,但我確實調用了基礎構造函數。代碼被調用並執行。證明是,在我的stotryboard_completed方法中,我檢查對象的X和Y位置,當它到達一些特定值時,我從屏幕中刪除正確發生的對象。什麼不發生,是實際的運動。該對象不會在屏幕上移動。故事板發生,更新CompositeTransform的工作,但對象保持不變... – Nicolas

0

好吧,有我自己的錯誤:我與其他一些替代的RenderTransform子類的變換。我剛開始使用TransformGroup,一切正常!

感謝您的幫助