我能够使用这种技术做我想要的东西,这是为了防止后退导航,同时隐藏了滑入和滑出窗口的控件。默认情况下,控件的可见性已折叠。故事板用于控制何时可见或折叠。在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