Dependency property

Résolu
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018 - 28 sept. 2009 à 10:23
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018 - 28 sept. 2009 à 11:22
Bonjour !

J'ai créé récemment un user control (encore un) et j'ai tenté d'implémenter au maximum des dependency property avec ses accesseurs, afin de le rendre plus utilisable.

Le problème, c'est que le binding sur ses propriétés déclarées comme dependency property ne marche que dans un sens :

Par exemple, lorsque je bind la propriété value d'un slider avec une propriété de mon control, je ne peux pas modifier la valeur de cette propriété en modifiant celle du slider, alors que l'inverse marche... et ce même en mettant "Mode=TwoWay" dans le binding.

Que je mette le binding sur la propriété de mon control ou sur la propriété value du slider, le résultat est le même ...

Voici le code de ma propriété :

public static DependencyProperty PasXProperty;

...

static [mon user control] ()
{
PasXProperty = DependencyProperty.Register("PasX", typeof(double), typeof([mon user control]), new FrameworkPropertyMetadata(1.0));
}

...

public double PasX
{
get{

return (double)GetValue(PasXProperty);
}

set{
SetValue(PasXProperty, value);
}
}


En espérant que quelqu'un trouve une solution =S


Cordialement,

KiTe


Ce qui nous tue pas nous rend plus fort,
Mais ce qui nous tue nous rend plus mort.

1 réponse

cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018
28 sept. 2009 à 11:22
le problème est résolu ...

la valeur se mettait bien a jours, mais le code juste après le SetValue qui était en pratique implémenté n'était pas lu. Comme il s'agissait d'une MAj graphique, j'avais donc eu l'impression que le binding était défectueux (ce qui n'est finalement donc pas le cas)

Il faut pour cela passer par le callback proposé dans le constructeur de la classe FrameworkPropertyMetadata et mettre le code d'action dedans.




Ce qui nous tue pas nous rend plus fort,
Mais ce qui nous tue nous rend plus mort.
3
Rejoignez-nous