2010-03-05 46 views
1

在visual studio中,當故事板運行時,我會得到「XAML解析錯誤」。該應用程序啓動,但當我將鼠標懸停在已經模板化的按鈕上時,會顯示錯誤。自定義附加屬性有什麼問題?

我的按鈕模板(使用視覺狀態等)有一個圓形,它通過自定義附加屬性進行縮放。

這就提出了在運行時錯誤的代碼如下值屬性:

<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
    Storyboard.TargetName="Document" 
    Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"> 
    <EasingDoubleKeyFrame KeyTime="00:00:00.7000000" 
    Value="{Binding Path=(local:MyAttachedProperties.Scaling), RelativeSource={RelativeSource TemplatedParent}}" /> 
</DoubleAnimationUsingKeyFrames>; 

的附加屬性的代碼是:

public class MyAttachedProperties 
{ 
    public static readonly DependencyProperty ScalingProperty = 
    DependencyProperty.RegisterAttached("Scaling", 
     typeof(double), typeof(MyAttachedProperties), null); 

    // Scaling 
    public static double GetScaling(DependencyObject obj) 
    { 
    return (double)obj.GetValue(ScalingProperty); 
    } 
    public static void SetScaling(DependencyObject obj, double value) 
    { 
    obj.SetValue(ScalingProperty, value); 
    } 
} 

和我的按鈕,我有:

<Button Height="76" 
     Content="Gallery" 
     Style="{StaticResource MyRotatingButtonStyle}" 
     Padding="10" 
     local:MyAttachedProperties.Scaling="2" /> 
+0

Silverlight或WPF?這是一個很少見的問題,實際上兩者都適用 – AnthonyWJones 2010-03-05 11:50:19

+0

嗨安東尼,是的,這是銀光。 – 2010-03-05 12:37:44

回答

1

在Silverlight中,你不能綁定一個動畫對象,它們不是從FrameworkElement得到的,它是re在Silverlight 3中要求綁定工作。

要實現您的目標,您需要編寫一些代碼來查找EasingDoubleKeyFrame並直接調整值。

+0

嗨安東尼,任何想法如何做到這一點? EasingDoubleKeyFrame是一種風格,因此將x:Name分配給它並不會將其暴露在代碼隱藏文件中。 – 2010-03-05 17:04:11

+0

此鏈接http://blogs.msdn.com/edmaia/archive/2008/10/16/animating-custom-attached-properties-in-sl2.aspx和http://bryantlikes.com/AnimationHackUsingAttachedPropertiesInSilverlight.aspx讓你開始。感謝所有的幫助。直到有一天,我甚至不知道定製的附屬物是什麼。 – 2010-03-06 08:45:59