重置 TranslateZoomRotateBehavior? (WPF/混合行为)

发布于 2024-09-18 15:55:45 字数 501 浏览 6 评论 0原文

我已将 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 以返回网格及其内容到其原始位置。有谁知道这是否可能?

I have attached a TranslateZoomRotateBehavior to a Grid:

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

in the CancelButton_Click eventhandler I want to reset the TranslateZoomRotateBehavior to return the Grid and it's content to it's original position. Does anyone know whether this is possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哽咽笑 2024-09-25 15:55:45

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();

TranslateZoomRotateBehavior is adding MatrixTransform to element it is attached to.

So modifying your example:

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

Then you can reset it in code the following way:

TestGrid.RenderTransform = new MatrixTransform();
﹂绝世的画 2024-09-25 15:55:45

如果您指定要在其上重置行为集合的网格。

<Grid x:Name="grid1">

您可以在代码后面获取行为列表

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

,然后您可以随意使用它们,如果您想将它们全部删除,则可以使用 .Clear() 如果您只想重置值但保留您可以访问的 TranslateZoomRotateBehavior它与

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

If you name the grid that you want to reset the behaviours collection on.

<Grid x:Name="grid1">

You can get a list of the behaviors in code behind with

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

You're then free to work with them however you want, if you want to remove them all .Clear() if you want to reset just values but keep the TranslateZoomRotateBehavior you can access it with

TranslateZoomRotateBehavior targetBehavior = (TranslateZoomRotateBehavior)b[0];
targetBehavior.ConstrainToParentBounds = true;
targetBehavior.SupportedGestures = ....
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文