Bonjour à tous,
dans le cadre du développement d'une interface multitouch, je souhaite utiliser ce qu'on appelle les "attached events" pour ne pas à avoir créer mes propres composants mais pouvoir utiliser les originaux. Je pourrais ainsi écrire par exemple :
XAML
<Ellipse ot:oT.onQuelqueChose="plop" />
Malheureusement j'ai beaucoup de difficultés ! Même l'exemple trouvé sur la MSDN ne veut pas fonctionner :
La propriété pouvant être attachée 'NeedsCleaning' est introuvable dans le type 'AquariumFilter'.
J'ai donc essayé de contourner le problème en utilisant une "attached property"
C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
namespace ot
{
public class oT
{
public delegate void typeEvt(); // Je définie le delegate
public static DependencyProperty onNewODotProperty = DependencyProperty.RegisterAttached(
"onNewODot",
typeof(typeEvt),
typeof(UIElement),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender)
); // Puis la propriété de dépendance sensée contenir la référence vers la fonction à appeler
public static void SetonNewODot(UIElement element, typeEvt value)
{
element.SetValue(onNewODotProperty, value);
}
public static typeEvt GetonNewODot(UIElement element)
{
return (typeEvt)element.GetValue(onNewODotProperty);
}
}
} |
Bref, ensuite je lie dans le code XAML la propriété avec un événement de ma classe Window. La compilation s'effectue correctement, mais une exception est rapidement levée :
"Le type «*typeEvt*» n’a pas de classe TypeConverter publique
Bref, je n'y comprends plus rien, et cela soulève deux questions :
- Quelqu'un a-t-il réussi à utiliser un "attached event" ?
- Quelqu'un voit-il où est l'erreur dans mon raisonnement pour la solution utilisant un DependencyProperty ?
Merci d'avance à tous et bonnes fêtes 
Henri
Partager