我正在使用故事板将Rectangle对象的opacity
从1更改为0.使用以下代码隐藏,Storyboard完美运行:
StoryboardFadeHider.Begin();
我的页面正在使用NavigationCacheMode = NavigationCacheMode.Enabled;
来缓存页面状态。动画在OnNavigatedTo
中启动,但延迟BeginTime
。当第一次加载页面时,这非常有效,因为不透明度为1并且淡化为0.从缓存加载页面时,不透明度为0,因为故事板已经运行。在这种情况下的结果是
在运行故事板之前使用FadeHider.Opacity = 1;
将不透明度设置为1并不能以某种方式工作,我的猜测是缓存的故事板会覆盖它。
这是故事板和矩形:
<Page.Resources>
<Storyboard x:Name="StoryboardFadeHider">
<DoubleAnimation Storyboard.TargetName="FadeHider" BeginTime="0:0:1" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:0.5" />
</Storyboard>
</Page.Resources>
...
<Rectangle Grid.Row="0" Name="FadeHider" Opacity="1" Stretch="Fill" Fill="Black" />
如何在运行故事板之前每次加载页面时将不透明度设置为1?
答案 0 :(得分:1)
当您导航到其他页面时,OnNavigatingFrom
中的不透明度重置为1:
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
StoryboardFadeHider.Stop();
}
同样在OnNavigatedTo
中,您可以再次启动故事板:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
StoryboardFadeHider.Begin();
}