2015-08-01 2 views
4

Je crée un composant qui utilise un custom renderer sur chaque plate-forme. Appelons-le simplement un élément SpecialButton. BindableProperty fonctionne correctement pour les valeurs, mais je souhaite également autoriser un utilisateur à appeler des opérations sur le moteur de rendu à partir du code partagé (appelez les méthodes du moteur de rendu à partir du code de contrôle Forms). Je considérais DependencyService comme une solution possible mais je ne pense pas que cela fonctionnera car il est possible que plusieurs boutons apparaissent sur la même page. J'ai donc besoin de l'instance de rendu spécifique créée et liée à mon élément Xamarin Forms.Accès à une instance de rendu personnalisée à partir du code partagé de l'élément Forms Xamarin

Alors, est-il un moyen élégant pour mon élément de commande Xamarin formulaires pour obtenir l'accès au moteur de rendu personnalisé qui a été instancié par les formes cadre?

j'avais pensé à exposer une propriété sur le contrôle et laisser le moteur de rendu lui-même fixé à la propriété dans son constructeur, mais cela se sent aki et il expose également à l'utilisateur du contrôle que je ne veux pas faire .

Répondre

0

Je pense avoir trouvé une solution. Je n'ai pas réalisé que le MessagingCenter avait un paramètre source qui peut être utilisé pour spécifier la propriété de l'élément.

MessagingCenter.Subscribe(this, "DoOperation", myButton => DoOperation(), Element);