我可能会错过一些非常明显的东西。我试图编写一个自定义面板,其中内容根据一些依赖性属性进行布置(我假设它们具有为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(这是绝对必要的,任何情况下),结果是一样的尝试。在灾难性错误启动之前,事件处理程序甚至不会被调用。