2009-09-15 5 views
2

J'essaie d'appeler une commande lorsque ma souris est sur un bouton bascule.XAML Setter Propriété à commander

J'ai le code suivant.

<Trigger Property="IsMouseOver" Value="True"> 
<Setter Property="Cursor" Value="Hand"></Setter> 
<Setter Property="Command" Value="{Binding Path=PushPinMouse}" /> 
</Trigger> 

Lorsque je passe la souris, l'aiguille s'affiche. Mais quand je passe la souris sur elle ne frappe pas ma méthode PushPinMouse .. Pourquoi est-ce?

Répondre

0

Les commandes sont exécutées par des contrôles comme ToggleButton quand ils sont cliqués. Je n'ai aucune idée de votre scénario, mais vous pouvez peut-être définir la propriété IsChecked dans votre setter et avoir une propriété liée à IsChecked. J'espère que ça aide.

-1

Les commandes ne sont pas binded avec, vous devez assigner commande utiliser la commande = PushPinMouse

0

Vous changez la commande que le bouton déclenche, mais il n'éxécute pas le bouton jusqu'à ce que vous cliquez dessus. Donc, dans ce cas, vous devez avoir la souris sur et cliquez pour exécuter la commande.

Je suppose également que vous avez lié votre commande à la fonction de commande en utilisant un CommandBinding?

1

Ce dont vous avez besoin ici est le comportement joint. Je peux vous recommander de voir ce bel article: http://blogs.microsoft.co.il/blogs/tomershamam/archive/2009/04/14/wpf-commands-everywhere.aspx

Votre code serait ressemble (avec la bibliothèque de commandes ci-joint):

<Style> 
    <Setter Property="ts:CommandSource.Trigger"> 
    <Setter.Value> 
     <ts:PropertyCommandTrigger Property="IsMouseOver" Value="true" Command="{Binding Path=PushPinMouse}"/> 
    </Setter.Value> 
    </Setter> 
</Style> 

Cela dit: « Quand la souris est terminée, exécute la commande PushPinMouse » . Si ce n'est pas le comportement dont vous avez besoin, vous pouvez peut-être adapter ce code;) Comme les autres ont dit, une commande de bouton est seulement exécutée quand elle est cliquée, MAIS cette bibliothèque peut ajouter des commandes à d'autres événements (alors que les événements routés ou la propriété événements modifiés).

Vous aurez toujours besoin ce déclencheur:

<Trigger Property="IsMouseOver" Value="True"> 
    <Setter Property="Cursor" Value="Hand"></Setter> 
</Trigger> 
Questions connexes