0

私は本当に明白な何かを見逃しているかもしれません。いくつかの依存関係プロパティに従ってコンテンツがレイアウトされるカスタム パネルを作成しようとしています (アニメーション化できるようにしたいので、DP である必要があると想定しています)

ただし、ストーリーボードを実行してこれらの両方のプロパティをアニメーション化しようとすると、Silverlight は壊滅的なエラーをスローします。しかし、そのうちの 1 つだけをアニメーション化しようとすると、問題なく動作します。また、プロパティの 1 つと「組み込み」プロパティ (不透明度など) をアニメーション化しようとすると、それも機能します。しかし、両方のカスタム プロパティをアニメーション化しようとすると、壊滅的なエラーが発生します。

他の誰かがこれに出くわしますか?

編集:

2 つの DP は ScaleX と ScaleY で、どちらも double です。パネル内の子の X および Y 位置をスケーリングします。そのうちの 1 つを定義する方法は次のとおりです。

    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 への呼び出しの有無にかかわらず試してみましたが (これはいずれにせよ絶対に必要です)、結果は同じです。壊滅的なエラーが発生する前に、イベント ハンドラーが呼び出されることさえありません。

4

3 に答える 3

1

これは、Silverlight 2 Beta 2 で文書化されたバグです。同じオブジェクトで 2 つのカスタム依存関係プロパティをアニメーション化することはできません。

于 2008-09-17T19:49:23.057 に答える
0

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

Silverlight 2 Release Candidate 0 が本日リリースされました。この問題をテストしたところ、修正されたようです。テスト パネルの両方のカスタム DP を適切にアニメーション化できるようになったため、アプリは期待どおりに動作しています。いいですね。

この RC は開発者ベースの RC にすぎないため、Silverlight の標準ビルドは更新されていないことに注意してください。とはいえ、来月には完全にリリースされると思います。

于 2008-09-26T17:31:19.437 に答える
0

OnPropertyChanged の InvalidateArrange をコメントアウトして、何が起こるか見てみます。

于 2008-09-16T13:16:56.207 に答える