2010-02-22 6 views
0

J'ai créé un UserControl WPF qui contient un bouton. Je veux maintenant que n'importe quel utilisateur de la commande usercontrol soit capable de définir une propriété Command sur usercontrol, et que cette commande soit assignée au bouton dans le contrôle. c'est-à-dire que lorsque le bouton est cliqué, il exécute la commande (dans ce cas, une commande Prism DelegateCommand).Passer la commande du bouton WPF via UserControl

Alors, mon UserControl ressemble:

<UserControl> 
    <Button ...> 
</UserControl> 

et mon consommation, je veux ressembler à:

<controls:ThreeStateImageButtonControl 
    Command="..." /> 
+0

Désolé Lars, juste mis à jour! – devdigital

Répondre

3

Vous devez créer une propriété de dépendance pour le commandement de votre commande, puis créez un gestionnaire d'événement pour l'événement Click du bouton pour exécuter la commande. Les utilisateurs peuvent ensuite se lier à la commande. Peut-être un tutoriel Web ou de la documentation vous aider à faire cela? Peut-être google "propriété de dépendance WPF sur le tutoriel de contrôle utilisateur" ou une telle chose.

Cependant, je ne suis pas sûr que vous fassiez la bonne chose. Si votre contrôle utilisateur n'a rien d'autre qu'un bouton à l'intérieur, vous pouvez envisager un contrôle personnalisé qui hérite de Button à la place; l'implémentation serait plus simple, et les utilisateurs pourraient simplement utiliser l'événement Click de la manière normale. Il existe également des tutoriels de contrôle personnalisé WPF sur le Web dans de nombreux endroits. D'ailleurs, votre propriété ne s'appelle pas Command, n'est-ce pas?

4

C'mon man! C'est WPF. L'idée est de rester à l'écart des contrôles utilisateur et des contrôles personnalisés, c'est l'ancienne façon de faire les choses Windows Forms. La meilleure chose à faire ici est d'utiliser le template WPF et les fonctionnalités sans look de WPF pour styliser le contrôle avec le conteneur et les comportements que vous aimez. Ensuite, vous n'avez pas à vous soucier de passer à travers les fonctionnalités Click ou Command puisqu'elles sont déjà là. Au lieu d'encapsuler un contrôle dans d'autres éléments et d'en faire un contrôle utilisateur, il suffit de styliser votre contrôle avec les autres éléments.

+0

Merci! Je suppose que c'est une approche qui mérite d'être considérée. Je pense que dans ce cas, je vais faire en sorte que le contrôle hérite directement de Button. Le contrôle peut avoir plus tard des commandes personnalisées, etc. Si je l'ai implémenté comme un style explicite, les commandes devront être redéfinies pour chaque instance du bouton. – devdigital

+0

Vous avez 100% raison !! – Raffaeu