[WPF] Bound Animation

Je suis en train d’écrire un CustomControl pour WPF devant être utilisé dans un nouvelle application, et je souhaitai pouvoir m’occuper de toute la partie animation en Xaml, pour cela mon contrôle expose des propriétés pour WPF pour pouvoir les utiliser directement dans le Xaml :

[code]public static readonly DependencyProperty RequestedWidthProperty = DependencyProperty.RegisterAttached(
“RequestedWidth”, typeof(double), typeof(ZoomBrick),
new FrameworkPropertyMetadata(10.0));
public static void SetRequestedWidth(UIElement element, double value)
{ element.SetValue(RequestedWidthProperty, value); }
public static double GetRequestedWidth(UIElement element)
{ return (double)element.GetValue(RequestedWidthProperty); }

public double RequestedWidth
{
get { return (double)GetValue(RequestedWidthProperty); }
set {
SetValue(RequestedWidthProperty, value);
applySizeChange();
}
}

// imaginer la même chose pour RequestedHeight

private void applySizeChange()
{
Storyboard animator = (Storyboard)FindResource(“ctrlResizeAnimation”);
animator.Begin(this);
}[/code]

Ensuite dans mon Xaml je défini mon contrôle et mon animation comme suit :

[code]

<UserControl.Resources>



</UserControl.Resources>

[/code]

Je place l’animation dans les resources statiques pour le moment, mais l’idée est de le placer dans un style plus tard pour avoir un comportement skinable. Là où ça merde, c’est dans l’attribus ‘To’, le binding ne marche pas j’ai une exception lancé comme suit :

Y a-t-il moyen de formuler un binding qui ferait fonctionner l’animation avec un ‘To’ sur mon RequestedWidth, ou ai-je prit le problème du mauvais côté et j’ai raté la philosophie du truc?

Edit : je ne suis pas arriver à me logguer sur le forum WPF de la MSDN, service temporairement indispo B)
Edit2 : correction titre du thread

Alors j’ai 2 remarques:

[ul]
[li]On dit pas Binded (mais Bound) B)[/li][li]Pour ce genre de chose, il vaut mieux créer un CustomControl plutôt qu’un UserControl, et mettre ton storyboard dans les ressources du template par défaut. Là, tu pourras faire un TemplateBinding directement sur ta propriété.[/li][/ul]Sinon, si on garde l’idée du UserControl, tu peux toujours essayer un {Binding Path=RequestedWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type lns:ZoomBrick}}, mais pas sûr du tout que ca fonctionne, étant donné que le storyboard est dans un ressource dictionnary, et non directement dans l’arbre visuel.

J’en profite pour filer l’adresse de mon nouveau blog ici, y’a pas mal de post sur WPF, le binding, les DependencyProperty, Custom controls et tout le bazard: http://www.simonferquel.net/blog

Merci de ta réponse et pour l’adresse de ton blog, c’est typiquement le genre de ressource qu’on cherche quand on débute et qu’on missione dans la doc B)

(et jvais voir pour les suggestions)