2008-09-15 11 views
0

私は本当に明白な何かを見逃しているかもしれません。私はカスタムパネルを記述しようとしています。内容はいくつかの依存関係のプロパティに基づいてレイアウトされています(にはがありますのでDPにする必要があります)。Silverlightでカスタム依存関係プロパティをアニメートできますか?

ただし、私がこれらのプロパティの両方をアニメーション化するためにストーリーボードを実行しようとすると、SilverlightはCatastophic Errorをスローします。しかし、それらのうちの1つだけをアニメートしようとすると、正常に動作します。私のプロパティと「組み込み」プロパティ(Opacityなど)のいずれかをアニメートしようとすると、それも機能します。しかし、両方のカスタムプロパティをアニメーション化しようとすると、Catastrophicエラーが発生します。

他にも誰もが遭遇しますか?

編集:2つの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の文書化されたバグです。同じオブジェクトで2つのカスタム依存プロパティをアニメートすることはできません。

0

私はOnPropertyChangedのInvalidateArrangeをコメントアウトし、何が起こるかを見てみるでしょう。

0

私自身の質問に答えるのが悪い形ではないことを願っています。

Silverlight 2 Release Candidate 0が今日リリースされました。私はこの問題をテストしましたが、修正されているようです。私のテストパネルのカスタムDPは両方とも正しくアニメーション化できるようになりました。そのため、アプリケーションは期待どおりに動作します。どちらがいいですか?

このRCは開発者ベースのRCであるため、Silverlightの標準ビルドは更新されていないことに注意してください。私はそれが来月に完全にリリースされることを期待しています。

関連する問題