2010-09-14 10 views
4

Je joins une TranslateZoomRotateBehavior à une grille:Réinitialiser TranslateZoomRotateBehavior? (WPF/comportement Blend)

<Grid> 
    <!--all sorts of content--> 
    <Button Content="Cancel" Click="CancelButton_Click Width="25" Height="20"/> 
    <i:Interaction.Behaviors> 
     <ei:TranslateZoomRotateBehavior ConstrainToParentBounds="True" SupportedGestures="Translate"/> 
    </i:Interaction.Behaviors> 
</Grid> 

dans le eventhandler CancelButton_Click Je veux réinitialiser le TranslateZoomRotateBehavior pour retourner la grille et son contenu à sa position d'origine. Est-ce que quelqu'un sait si c'est possible?

+0

Avez-vous jamais obtenir une réponse à cela? J'ai le même problème. – Doobi

Répondre

0

Si vous nommez la grille sur laquelle vous souhaitez réinitialiser la collection de comportements.

<Grid x:Name="grid1"> 

Vous pouvez obtenir une liste des comportements dans le code derrière avec

var b = System.Windows.Interactivity.Interaction.GetBehaviors(grid1) 

Vous êtes alors libre de travailler avec eux comme vous le voulez, si vous voulez les supprimer tous .Clear() si vous voulez réinitialiser seulement les valeurs mais garder le TranslateZoomRotateBehavior vous pouvez y accéder avec

TranslateZoomRotateBehavior targetBehavior = (TranslateZoomRotateBehavior)b[0]; 
targetBehavior.ConstrainToParentBounds = true; 
targetBehavior.SupportedGestures = .... 
0

TranslateZoomRotateBehavior est l'ajout MatrixTransform à l'élément, il est attaché.

donc modifier votre exemple:

<Grid Name="TestGrid"> 
    <!--all sorts of content--> 
    <Button Content="Cancel" Click="CancelButton_Click Width="25" Height="20"/> 
    <i:Interaction.Behaviors> 
     <ei:TranslateZoomRotateBehavior ConstrainToParentBounds="True" SupportedGestures="Translate"/> 
    </i:Interaction.Behaviors> 
</Grid> 

Ensuite, vous pouvez réinitialiser dans le code de la manière suivante:

TestGrid.RenderTransform = new MatrixTransform();