我的XAML中有一个包含ProgressRing的网格,当应用程序执行长时间运行的任务时,该网格会淡入视图:
<Grid Height="100" Width="100" >
<Grid Background="#55000000" />
<ProgressRing x:Name="mapProgressRing" Width="50" Height="50" Foreground="White" />
</Grid>
</Border>
但是,我想将动画延迟1秒,其想法是,如果任务在不到一秒的时间内完成,则永远不会显示网格。这样可以避免在执行非常短的任务时网格不断闪烁。
但是,尽管在上面的XAML中设置了BeginTime,但是Grid总是立即开始淡入视图,即使我在代码中尝试这样做也是如此。这是我的代码:
void dataSou_WillStartFetchingSomething(object sender, EventArgs e)
{
// Don't bother fading in spinner unless it takes more than a second
showSpinner(TimeSpan.FromSeconds(1));
}
void Instance_WillEndFetchingSomething(object sender, EventArgs e)
{
hideSpinner();
}
#region Spinner
void showSpinner(TimeSpan? delayStartTime)
{
// Stop animation in case it's already running
mapRingFadeOutStoryBoard.Stop();
// Fade in, delaying the start by the specified time
mapRingFadeInStoryBoard.BeginTime = delayStartTime;
mapRingFadeInStoryBoard.Begin();
}
void hideSpinner()
{
// Stop the 'fade in' animation in case it's still running
mapRingFadeInStoryBoard.Stop();
// Fade out
mapRingFadeOutStoryBoard.Begin();
}
#endregion
我究竟做错了什么?
最佳答案
不知道出了什么问题,但是您可以改用async / await。只需将您的方法标记为异步,然后执行“ await Task.Delay(1000)”以等待一秒钟,然后再开始动画。
关于c# - XAML(地铁应用程序)-如何将FadeInThemeAnimation延迟一秒钟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11950255/