制作栅格动画以向右移动或滑动WPF

本文关键字:移动 WPF 右移 动画 | 更新日期: 2023-09-27 18:24:02

我有一个网格,里面有元素。我想移动所有这些元素,所以不能一起移动网格吗?这对我所看到的没有任何影响,我甚至尝试过ScaleX等。

<Grid x:Name="HancockDetails" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100" Grid.Column="1" RenderTransformOrigin="0.5,0.5">                       
   <Rectangle HorizontalAlignment="Left" Height="100" Stroke="Black" VerticalAlignment="Top" Width="100"/>
    <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Foreground="#FFF30000"/>               
            </Grid>
          </Grid>
      </s:ScatterViewItem>

我的功能:

Storyboard sb = new Storyboard();
DoubleAnimation slide = new DoubleAnimation();
slide.To = 3000.0;
slide.From = 0;
slide.Duration = new Duration(TimeSpan.FromMilliseconds(40.0));
// Set the target of the animation
Storyboard.SetTarget(slide,HancockDetails);
Storyboard.SetTargetProperty(slide, new PropertyPath("RenderTransform.(ScaleTransform.ScaleY)"));
// Kick the animation off
sb.Children.Add(slide);
sb.Begin();

制作栅格动画以向右移动或滑动WPF

您需要首先在标记中添加RenderTransform,否则运行时找不到它:

<Grid x:Name="HancockDetails" ...>  
    <Grid.RenderTransform>
        <TranslateTransform />
    </Grid.RenderTransform>
</Grid>

我想你想使用TranslateTransform,而不是ScaleTransform,因为目标是滑动网格,而不是调整网格大小?

Storyboard.SetTargetProperty(slide, 
    new PropertyPath("RenderTransform.(TranslateTransform.X)"));

与其尝试手动创建故事板,不如使用Expression Blend。这是一个免费的设计工具,与VisualStudio相得益彰。你正在解释的故事板需要30秒才能制作完成,而且没有代码。然后,当你想让它运行时,它只会是StoryBoardName.Begin()

对吗?这是一种资源。http://msdn.microsoft.com/en-us/expression/cc197141.aspx