我有一个元素,我想在网格上拖拽,但它破坏了我现有的转换

本文关键字:坏了 转换 元素 有一个 网格 | 更新日期: 2023-09-27 18:17:14

这是我的XAML:

          <Grid>
          <Grid Margin="0,0,20,20" Name="myGrid" Background="#FFFDFDFD" Width="100" Height="100" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Right" VerticalAlignment="Bottom" >
            <i:Interaction.Behaviors>
                <il:MouseDragElementBehavior ConstrainToParentBounds="True" />
            </i:Interaction.Behaviors>
            <Grid.RenderTransform>
                <TransformGroup>
                    <RotateTransform x:Name="rotate1" Angle="0" />
                    <TranslateTransform x:Name="trans1" />
                    <ScaleTransform x:Name="scale1" ScaleX="1" ScaleY="1" />
                </TransformGroup>
            </Grid.RenderTransform>
           </Grid>
           </Grid>

我使用两个库从表达式SDK (I:System.Windows。交互性和(Microsoft.Expression.Interactions)可以让我很容易地在网格中拖动元素,而且性能很好。

问题是这些库搞砸了我的动画(在转换组中使用转换)。如果我在拖动网格之前运行动画,一切都会很好。但是一旦我移动了网格,动画就不再工作了。

我真的是新的这个转换的东西(你可能可以想象),所以任何帮助将非常感激!

我有一个元素,我想在网格上拖拽,但它破坏了我现有的转换

我可以通过修改故事板来解决这个问题。属性中的TargetProperty。我最初设置了Storyboard。TargetProperty转换为ScaleTransform本身的"ScaleX"或"ScaleY",它总是工作得很好-只是在我移动网格后它就不再工作了。下面是更新后的代码:

       <Storyboard x:Key="sizeAnimation" >
        <DoubleAnimation Storyboard.TargetName="myGrid"
        Storyboard.TargetProperty="(Grid.RenderTransform).(TransformGroup.Children)[2].(ScaleTransform.ScaleX)" 
        To="1" Duration="00:00:0.4" />
        <DoubleAnimation Storyboard.TargetName="myGrid"
        Storyboard.TargetProperty="(Grid.RenderTransform).(TransformGroup.Children)[2].(ScaleTransform.ScaleY)"
        To="1" Duration="00:00:0.4" />
       </Storyboard>

TargetProperty现在遍历TransformGroup中的Transforms,以获得动画所需的当前值([2]是我需要访问的Transform的索引-这是原始XAML中的ScaleTransform)。

现在一切正常。希望对大家有所帮助