2008-09-15 80 views
0

我可能會錯過一些非常明顯的東西。我試圖編寫一個自定義面板,其中內容根據一些依賴性屬性進行佈置(我假設它們具有爲DP,因爲我希望能夠爲它們設置動畫效果。)您可以在Silverlight中爲自定義依賴項屬性設置動畫效果嗎?

但是,當我嘗試運行故事板來爲這兩個屬性設置動畫時,Silverlight會拋出一個Catastophic Error。但是,如果我嘗試對其中的一個進行動畫製作,它可以正常工作。如果我嘗試爲我的某個屬性和「內置」屬性(如不透明度)設置動畫效果,它也可以。但是,如果我嘗試對我的自定義屬性進行動畫處理,則會發生災難性錯誤。

其他人碰到過嗎?

編輯:

兩個DPS們的ScaleX和scaleY - 無論是雙打。他們在小組中對兒童的X和Y位置進行縮放。下面是其中的一個定義:

public double ScaleX 
    { 
     get { return (double)GetValue(ScaleXProperty); } 
     set { SetValue(ScaleXProperty, value); } 
    } 

    /// <summary> 
    /// Identifies the ScaleX dependency property. 
    /// </summary> 
    public static readonly DependencyProperty ScaleXProperty = 
       DependencyProperty.Register(
         "ScaleX", 
         typeof(double), 
         typeof(MyPanel), 
         new PropertyMetadata(OnScaleXPropertyChanged)); 

    /// <summary> 
    /// ScaleXProperty property changed handler. 
    /// </summary> 
    /// <param name="d">MyPanel that changed its ScaleX.</param> 
    /// <param name="e">DependencyPropertyChangedEventArgs.</param> 
    private static void OnScaleXPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     MyPanel _MyPanel = d as MyPanel; 
     if (_MyPanel != null) 
     { 
      _MyPanel.InvalidateArrange(); 
     } 
    } 

    public static void SetScaleX(DependencyObject obj, double val) 
    { 
     obj.SetValue(ScaleXProperty, val); 
    } 

    public static double GetScaleX(DependencyObject obj) 
    { 
     return (double)obj.GetValue(ScaleXProperty); 
    } 

編輯:我有和沒有呼叫InvalidateArrange(這是絕對必要的,任何情況下),結果是一樣的嘗試。在災難性錯誤啓動之前,事件處理程序甚至不會被調用。

回答

1

這是Silverlight 2 Beta 2中記錄的錯誤。您無法在同一個對象上爲兩個自定義依賴屬性設置動畫。

0

我會嘗試註釋OnPropertyChanged中的InvalidateArrange並查看會發生什麼。

0

我希望能夠回答我自己的問題並不是什麼糟糕的形式。

Silverlight 2 Release Candidate 0今天發佈,我已經測試過這個問題了,它似乎已經修復了。現在我的測試面板中的兩個自定義DP都可以正常動畫,所以該應用程序的行爲如預期。這很好。

請注意,此RC僅是一個基於開發人員的RC,因此Silverlight的標準版本尚未更新。不過,我預計它會在下個月完全發佈。

相關問題