我能夠使用這種技術做我想要的東西,這是爲了防止後退導航,同時隱藏了滑入和滑出窗口的控件。默認情況下,控件的可見性已摺疊。故事板用於控制何時可見或摺疊。在XAML中,故事板裏:
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ControlScroller" Storyboard.TargetProperty="(UIElement.Visibility)">
<ObjectAnimationUsingKeyFrames.KeyFrames>
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames.KeyFrames>
然後在頁面的代碼:
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
if(ControlScroller.Visibility == Visibility.Visible && StoryboardHideControlSlider.GetCurrentState() != ClockState.Active)
{
StoryboardHideControlSlider.Begin();
ContentGrid.IsHitTestVisible = true;
e.Cancel = true;
}
}
注:在故事板隱藏的ContentScroller(這是一個網格),該KeyTime是設置爲「00:00:01」,因爲我希望它在滑動(和淡入淡出)時保持可見狀態。
注2:if語句中包含StoryboardHideControlSlider.GetCurrentState() != ClockState.Active
的原因是因爲如果用戶點擊後退按鈕兩次,故事板未完成,它將再次運行。這可以防止後退按鈕取消導航回到上一頁。換句話說,如果Storyboard處於活動狀態,則代碼「知道」用戶已經發起隱藏它並打算回到上一頁。 (好吧,至少這是他們將要得到的行爲......而且他們不會看到動畫兩次)!
從我的MainPage.xaml重寫OnBackKeyPress()並調用e.Cancel對我來說工作得很好。 – BrokeMyLegBiking 2010-12-20 04:13:30
可以處理後退按鈕,[查看我的這個帖子答案] [1] [1]:http://stackoverflow.com/questions/8975822/prompt-confirmation-dialog-when-exit -app/8977078#8977078 – Santhu 2012-01-27 10:46:03