Я мог бы упустить что-то действительно очевидное. Я пытаюсь написать пользовательскую панель, в которой содержимое размещено в соответствии с парой свойств зависимостей (я предполагаю, что они имеют в качестве DP, потому что я хочу иметь возможность их анимировать.)
Однако, когда я пытаюсь запустить раскадровку для анимации обоих этих свойств, Silverlight выдает Catastophic Error. Но если я попытаюсь оживить хотя бы одного из них, все будет хорошо. И если я пытаюсь анимировать одно из моих свойств и встроенное свойство (например, Opacity), оно также работает. Но если я пытаюсь анимировать оба моих пользовательских свойства, я получаю катастрофическую ошибку.
Кто-нибудь еще сталкивался с этим?
редактирование:
Два DP - 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);
}
Edit: я пробовал с и без вызова InvalidateArrange (который абсолютно необходим в любом случае), и результат одинаков. Обработчик события даже не вызывается, пока не возникнет Катастрофическая ошибка.