2010-03-05 9 views
1

En studio visuel, je reçois une "erreur d'analyse XAML" lors de l'exécution d'un story-board. L'application se lance mais lorsque je souris sur un bouton qui a été modélisé, l'erreur est affichée.Quel est le problème avec la propriété attachée personnalisée?

Mon modèle de boutons (utilisant des états visuels, etc.) a un cercle qui est transmis par une propriété attachée personnalisée.

Le code qui déclenche l'erreur lors de l'exécution est la propriété de valeur ci-dessous:

<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>; 

Le code de la propriété attachée est:

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); 
    } 
} 

et mon bouton je:

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

Silverlight ou WPF? C'est une question rare qui correspond aux deux. – AnthonyWJones

+0

Salut Anthony, oui c'est silverlight. –

Répondre

1

Dans Silverlight, vous ne pouvez pas lier sur un objet Animation dont ils ne dérivent pas FrameworkElement qui est requis dans Silverlight 3 pour la liaison au travail.

Pour atteindre votre objectif, vous devrez écrire du code pour trouver le EasingDoubleKeyFrame et ajuster la valeur directement.

+0

Salut Anthony, une idée de comment faire ça? EasingDoubleKeyFrame est dans un style en assignant un x: Name ne l'expose pas dans le code derrière le fichier. –

+0

Ce lien http://blogs.msdn.com/edmaia/archive/2008/10/16/animating-custom-attached-properties-in-sl2.aspx et http://bryantlikes.com/AnimationHackUsingAttachedPropertiesInSilverlight.aspx commencé. Merci pour votre aide. Jusqu'à l'autre jour, je ne savais même pas ce que c'était qu'une propriété personnalisée. –