到底是绕不过这个问题:页面导航(WP8.1 runtime)
有两个XAML页面,分别为A,B。A是MainPage页面。
在A的页面中注册后退键事件
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
HardwareButtons.BackPressed += HardwareButtons_BackPressed;//注册后退键事件
}
private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
if (Frame == null)
{
return;
}
if (Frame.CanGoBack)
{
Frame.GoBack();
e.Handled = true;
}
else
{
if (MainPage页面上的组件是否打开)//检测各个弹出项目是否弹出
{
//打开就关闭
}
else
{
APP_Exit++;
if(APP_Exit==1)
{
APP_Exit_Time = new DispatcherTimer();
APP_Exit_Time.Interval = TimeSpan.FromSeconds(1);
APP_Exit_Time.Start();Lid_Start.Begin();
APP_Exit_Time.Tick += APP_Exit_Time_Tick;
e.Handled = true;
}
else
{
App.Current.Exit();
}
}
}
}
一切都是运行的很好,但是我在B.xaml页面上建立一个显示栏,一个Button控制的,点击Button打开,第二次关闭或者在打开时按后退键关闭。如果展示栏打开时,按后退键这个时候。程序就直接返回到A页面了。
我在B页面上如同A页面也注册了个后退键事件
public B()
{
this.InitializeComponent();
HardwareButtons.BackPressed += HardwareButtons_BackPressed;}
private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
if (Voice_Nub != 0 && Canvas_Voice_Gird.Visibility == Visibility.Visible)
{
kaishi5.Begin();//关闭的动画
kaishi3.Begin();//关闭的动画
e.Handled = true;
else{
////Frame.GoBack();报错
Frame.Navigate(typeof(MainPage));
Frame.BackStack.Clear();
e.Handled = true;
}
}
依旧是不管用的,除非是把所有的返回的代码禁用了,后退键对B页面的展示栏的操作才是管用,但是后退键的后退页面效果也是没了..
真是糟透了..
我该怎么操作? 后退的效果亦在,B页面对展示栏的操作也是可以的?