2010-06-04 3 views
1

J'ai une classe dérivée de contrôle personnalisé et un modèle de vue pour aller avec. L'utilisateur peut effectuer plusieurs actions avec ce contrôle, et je pense qu'il est préférable de les implémenter en tant qu'objets RoutedCommand ou objets dérivés ICommand dans le modèle de vue afin que les ControlTemplates puissent les lier. La liaison d'une commande à un bouton dans un ControlTemplate doit être simple, mais comment puis-je lier la commande à, par ex. le bouton droit de la souris dans un autre ControlTemplate? Probablement un MouseGesture est impliqué, mais j'ai du mal à assembler les pièces.Comment lier une commande par ex. le bouton droit de la souris dans un ControlTemplate dans WPF?

Répondre

2

Un MouseGesture est impliqué, mais vous n'avez pas à le construire explicitement. Vous pouvez utiliser un MouseBinding qui va construire un MouseGesture pour vous sous le capot.

Vous avez besoin d'un UIElement pour joindre votre liaison. Voici comment vous le feriez avec un décorateur séparé.

<ControlTemplate ...> 
    <Decorator> 

    <Decorator.InputBindings> 
     <MouseBinding MouseAction="RightClick" Command="..." /> 
    </Decorator.InputBindings> 

    ... content here ... 

    </Decorator> 
</ControlTemplate> 

Plus probable que votre ControlTemplate utilise un panneau comme un DockPanel ou grille pour la mise en page, dans ce cas, vous pouvez attacher la liaison qu'au lieu d'ajouter un décorateur.

+0

Bon tour avec le décorateur - je n'avais pas vu ça avant. – hemp

+0

Merci, c'est exactement ce que je cherchais. – absence

Questions connexes