XAML に ProgressRing を含むグリッドがあり、アプリが長時間実行されるタスクを実行しているときにフェードインします。
<Grid Height="100" Width="100" >
<Grid Background="#55000000" />
<ProgressRing x:Name="mapProgressRing" Width="50" Height="50" Foreground="White" />
</Grid>
</Border>
ただし、アニメーションを 1 秒遅らせたいと考えています。タスクが 1 秒未満で終了した場合、グリッドは表示されません。したがって、非常に短いタスクが実行されるときに、グリッドが絶えず点滅するのを回避できます。
ただし、上記の XAML で BeginTime を設定しているにもかかわらず、コードでこれを試しても、グリッドは常にすぐにフェードアウトし始めます。これが私のコードです:
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
私は何を間違っていますか?