Сбросить TranslateZoomRotateBehavior?(WPF / смешанное поведение) - PullRequest
4 голосов
/ 14 сентября 2010

Я прикрепил TranslateZoomRotateBehavior к сетке:

<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>

в обработчике события CancelButton_Click Я хочу сбросить TranslateZoomRotateBehavior, чтобы вернуть сетку и ее содержимое в исходное положение. Кто-нибудь знает, возможно ли это?

Ответы [ 2 ]

1 голос
/ 19 сентября 2013

TranslateZoomRotateBehavior добавляет MatrixTransform к элементу, к которому он присоединен.

Итак, изменив ваш пример:

<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>

Затем вы можете сбросить его в коде следующим образом:

TestGrid.RenderTransform = new MatrixTransform();
0 голосов
/ 24 мая 2012

Если вы назовете сетку, для которой вы хотите сбросить коллекцию поведений.

<Grid x:Name="grid1">

Вы можете получить список поведений в коде с помощью

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

You 'Затем вы можете работать с ними так, как хотите, если хотите удалить их все. Очистите (), если хотите сбросить только значения, но сохраните TranslateZoomRotateBehavior, к которому вы можете обращаться с помощью

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