Dependency property

[Résolu]
Signaler
Messages postés
242
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2018
-
Messages postés
242
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2018
-
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

Messages postés
242
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2018

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.