wpf中用后台代码暂停动画无效

img

img


我在xaml中定义了个动画,我现在想在他的后台实现暂停继续这些功能,但是没有效果,我是哪儿写错了吗

以下内容部分参考ChatGPT模型:
你可以尝试使用Storyboard的Begin()方法和Pause()方法来实现在后台暂停和继续动画的功能。具体代码可以参考下面的示例:

XAML:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApp1"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <Storyboard x:Key="myAnimation">
            <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.ScaleX)"
                             From="1" To="2" Duration="0:0:1" RepeatBehavior="Forever"/>
            <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.ScaleY)"
                             From="1" To="2" Duration="0:0:1" RepeatBehavior="Forever"/>
        </Storyboard>
    </Window.Resources>

    <Grid>
        <Button Content="Start" Click="Button_Click"/>
        <Button Content="Pause" Click="Button_Click_1"/>
        <Button Content="Resume" Click="Button_Click_2"/>

        <Rectangle Fill="Blue" Width="100" Height="100">
            <Rectangle.RenderTransform>
                <TransformGroup>
                    <TranslateTransform X="50" Y="50"/>
                    <ScaleTransform ScaleX="1" ScaleY="1"/>
                </TransformGroup>
            </Rectangle.RenderTransform>
            <Rectangle.Triggers>
                <EventTrigger RoutedEvent="Loaded">
                    <BeginStoryboard Storyboard="{StaticResource myAnimation}" Name="myStoryboard"/>
                </EventTrigger>
            </Rectangle.Triggers>
        </Rectangle>
    </Grid>
</Window>

C#:

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

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        myStoryboard.Begin();
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        myStoryboard.Pause();
    }

    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        myStoryboard.Resume();
    }
}

在这个示例中,我定义了一个Storyboard来实现一个矩形的缩放动画。在XAML中,我使用了三个按钮来控制动画的开始、暂停和继续。在按钮的Click事件处理程序中,我分别调用了Storyboard的Begin()、Pause()和Resume()方法来实现相应的功能。
如果我的建议对您有帮助、请点击采纳、祝您生活愉快

参考下面
https://www.cnblogs.com/tommy-huang/p/6496748.html
https://www.cnblogs.com/Stay627/p/15857785.html