我的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/

10-12 12:36
查看更多