Xaml 如何使用Visible属性在UWP中重新启动动画?

Xaml 如何使用Visible属性在UWP中重新启动动画?,xaml,win-universal-app,uwp,Xaml,Win Universal App,Uwp,在UWP应用程序中,我在窗口底部显示一个错误栏,就像Windows10的Mail应用程序一样。其想法是,当我将可见性更改为“折叠”时,动画将开始。 创建窗口时,动画仅工作一次。每次可见性从可见变为折叠时,我都会触发动画。XAML代码是: <StackPanel Grid.Row="1" Canvas.ZIndex="10" Background="{StaticResource BackError}" VerticalAlignment="Bottom" Name="Notifica

在UWP应用程序中,我在窗口底部显示一个错误栏,就像Windows10的Mail应用程序一样。其想法是,当我将可见性更改为“折叠”时,动画将开始。 创建窗口时,动画仅工作一次。每次可见性从可见变为折叠时,我都会触发动画。XAML代码是:

 <StackPanel Grid.Row="1" Canvas.ZIndex="10"  Background="{StaticResource BackError}"  VerticalAlignment="Bottom" Name="NotificationStackPanel"  >
        <StackPanel.Transitions>
            <TransitionCollection>
                <PaneThemeTransition  Edge="Bottom"/>
            </TransitionCollection>
        </StackPanel.Transitions>
        <TextBlock VerticalAlignment="Center"  Foreground="White" Margin="20"  Name="NotificationText"/>
    </StackPanel>

我现在的解决办法是移除整个StackPanel并重新创建它,它可以工作,但看起来太难看了。

是一个过渡动画。通常,我们使用面板动画(PaneThemeTransition)来显示在屏幕上滑动相当长距离的UI,例如任务窗格或自定义软键盘

过渡动画具有内置触发器(过渡),可以在添加、删除、重新排序UI元素等时自动运行。过渡动画很容易应用。但是我们对动画效果的时间和顺序没有太多的控制

要重新启动面板动画,可以从其父元素中删除
StackPanel
,然后再次添加它,如下所示:

private bool isVisible=true;
私有void ChangeVisibility()
{
如果(可见)
    {
//Root是一个网格,它是NotificationStackPanel的父元素
Root.Children.Remove(NotificationStackPanel);
    }
否则
    {
Root.Children.Add(NotificationStackPanel);
    }
isVisible=!isVisible;
}
是一种过渡动画。通常,我们使用面板动画(PaneThemeTransition)来显示在屏幕上滑动相当长距离的UI,例如任务窗格或自定义软键盘

过渡动画具有内置触发器(过渡),可以在添加、删除、重新排序UI元素等时自动运行。过渡动画很容易应用。但是我们对动画效果的时间和顺序没有太多的控制

要重新启动面板动画,可以从其父元素中删除
StackPanel
,然后再次添加它,如下所示:

private bool isVisible=true;
私有void ChangeVisibility()
{
如果(可见)
    {
//Root是一个网格,它是NotificationStackPanel的父元素
Root.Children.Remove(NotificationStackPanel);
    }
否则
    {
Root.Children.Add(NotificationStackPanel);
    }
isVisible=!isVisible;
}

很遗憾,转换没有提供很多交互可能性。。。如果要使用
窗格Metransition
,您已经在以唯一可能的方式进行操作。我唯一能想到的另一个选择是使用故事板动画。不幸的是,转换并没有提供很多交互的可能性。。。如果要使用
窗格Metransition
,您已经在以唯一可能的方式进行操作。我唯一能想到的另一个选择是使用故事板动画。-1你读过这个问题吗?“我现在的解决办法是删除整个StackPanel并重新创建它,它可以工作,但看起来太难看了。”@Markus OP说“重新创建它”,但没有必要重新创建它,所以在我的回答中,我说再次添加它,我认为这是重新启动面板动画的唯一方法。如果你有更好的方法,请分享-你读过这个问题了吗?“我现在的解决办法是删除整个StackPanel并重新创建它,它可以工作,但看起来太难看了。”@Markus OP说“重新创建它”,但没有必要重新创建它,所以在我的回答中,我说再次添加它,我认为这是重新启动面板动画的唯一方法。如果你有更好的方法,请分享!