我正在实施我的应用程序支持的password lock feature
。
5
情况下,如果用户点击硬件后退按钮怎么办?
在这种情况下,我的应用程序关闭my passwordlock page
并在backstack中显示(我的应用程序)其他页面。显然是错误的行为。我该如何处理这种情况?
答案 0 :(得分:0)
一般来说,你可以"覆盖"通过实施BackPressed
事件,硬件后退按钮的行为。
private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
// ...add custom navigation code here
}
有关详细信息,请参阅Handling the Back Button in a Windows Phone app (XAML)
答案 1 :(得分:0)
不确定。你走了:
// when suspending
var frame = Window.Current.Content as Frame;
var state = frame.GetNavigationState();
ApplicationData.Current.LocalSettings.Values["state"] = state;
// when resuming
var frame = (Window.Current.Content = new Frame()) as Frame;
frame.Navigate(typeof(Login));
// after login success
var frame = Window.Current.Content as Frame;
if (ApplicationData.Current.LocalSettings.Values.ContainsKey("state"))
{
var state = ApplicationData.Current.LocalSettings.Values["state"] = state;
frame.SetNavigationState(state);
}
else
{
// no state to load
frame.Navigate(typeof(MainPage));
}
祝你好运!
答案 2 :(得分:0)
在这种情况下,您可以“覆盖”硬件后退按钮的行为BackPressed
事件。
这段代码只适用于Windows Phone,因为Windows 8系统中没有硬件后退按钮(因为您添加了Windows运行时标记)。
private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
e.Cancel = true;
}
此代码将取消后退按钮的作业,应用程序将不会将页面加载到堆栈中,因此它将保留在密码页面中。您可以按照以下方式更改行为:
private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
if( has_entered_password )
this.Frame.Navigate(typeof(__PageYouWant__));
else
e.Cancel = true;
}