我可能會錯過一些非常明顯的東西。我試圖編寫一個自定義面板,其中內容根據一些依賴性屬性進行佈置(我假設它們具有爲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(這是絕對必要的,任何情況下),結果是一樣的嘗試。在災難性錯誤啓動之前,事件處理程序甚至不會被調用。