私は本当に明白な何かを見逃しているかもしれません。いくつかの依存関係プロパティに従ってコンテンツがレイアウトされるカスタム パネルを作成しようとしています (アニメーション化できるようにしたいので、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 への呼び出しの有無にかかわらず試してみましたが (これはいずれにせよ絶対に必要です)、結果は同じです。壊滅的なエラーが発生する前に、イベント ハンドラーが呼び出されることさえありません。