如何将XAML代码中的动画转换为C#代码

3

当我的from和to值动态变化时,我该如何将这段XAML代码转换为C#的代码-behind?

XAML

<Window.Triggers>
    <EventTrigger RoutedEvent="Window.Loaded">
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation BeginTime="00:00:00"    
                            From="200"
                            To="500"
                            Storyboard.TargetProperty="(Window.Top)"    
                            AccelerationRatio=".1"   
                            Duration="0:0:.2" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Window.Triggers>
2个回答

4

你不需要从代码后台使用Storyboard,这只能通过DoubleAnimation完成。

public MainWindow()
{
    InitializeComponent();
    Loaded += (s, e) =>
       {
          DoubleAnimation animation = new DoubleAnimation(200, 500, 
                                          TimeSpan.FromSeconds(0.2));
          animation.AccelerationRatio = 0.1;
          BeginAnimation(Window.TopProperty, animation);
       };
}

1
尝试这个:

XAML

<Window x:Class="CreateAnimationinCodeHelp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Name="MyWindow" Loaded="Window_Loaded"
        Title="MainWindow" Height="350" Width="525">

    <Grid>
        <Label Background="AliceBlue" Content="Test" />
    </Grid>
</Window>

代码后台

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        Storyboard sb = new Storyboard();

        DoubleAnimation doubleAnimation = new DoubleAnimation();
        doubleAnimation.From = 200;
        doubleAnimation.To = 500;
        doubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.2));
        doubleAnimation.AccelerationRatio = 0.1;

        Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Window.Top)"));
        sb.Children.Add(doubleAnimation);

        MyWindow.BeginStoryboard(sb);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接