2010-07-30 27 views
3

所以我有一個衡量標準,我已經制定了順時針或逆時針方向的動畫。每隔一段時間,新的數據就會發布到我設置的兩個依賴項屬性中。當這些屬性中的數據發生變化時,我想對兩個值進行一些計算,以確定量規針的旋轉方向(以及量)。在依賴屬性中的靜態與非靜態的東西麻煩......我應該甚至使用DP?

我已經得到了旋轉代碼的工作,我寫了一個函數(全部用C#),它取得旋轉的起始角度,結束角度和持續時間。旋轉功能起作用,我可以將值放入並觀察針的旋轉。

我無法弄清楚如何做的是在任何一個依賴項屬性改變時調用這個動畫函數。將旋轉函數設爲靜態是不合適的,因爲旋轉調用可能最終會成爲實例特定的。

換句話說,我想實現的是PropertyChanged->計算新位置/速度 - >構建故事板並運行動畫。

我的依賴屬性而不是標準屬性的推理是因爲它們綁定到xaml的控制之外。

謝謝!

 private void AnimatePointer(double startAngle, double endAngle, TimeSpan length, string pointerName) 
    { 
     DoubleAnimation handRotation = new DoubleAnimation(); 
     handRotation.From = startAngle; 
     handRotation.To = endAngle; 
     handRotation.Duration = new Duration(length); 
     Storyboard.SetTargetName(handRotation, pointerName); 

     DependencyProperty[] propertyChain = 
      new DependencyProperty[] 
      { 
       Rectangle.RenderTransformProperty, 
       TransformGroup.ChildrenProperty, 
       RotateTransform.AngleProperty 
      }; 

     string anglePath = "(0).(1)[1].(2)"; 
     PropertyPath propPath = new PropertyPath(anglePath, propertyChain); 
     Storyboard.SetTargetProperty(handRotation, propPath); 

     Storyboard sb = new Storyboard(); 
     sb.Children.Add(handRotation); 
     sb.Begin(this); 
    } 

回答

5

我傻,但常被忽視的事實是所有的靜態回調方法的第一個參數是實例,該方法被調用的。它只需輸入到你的類型,然後可以通過它訪問屬性。

1

我認爲你需要使用PropertyChangedCallback an example

+0

這個問題是PropertyChangedCallback必須是一個靜態方法,所以我不能訪問我的非靜態的東西來動畫 – brandon 2010-07-30 23:09:16

+0

嗯我想包裝這個功能,並通過那裏你的數據更新 – 2010-07-30 23:28:03

+0

也許你必須改變設計模式? 這樣的東西 http://www.codeguru.com/csharp/csharp/cs_misc/userinterface/print.php/c12221 – 2010-07-30 23:43:56

相關問題