在可湿性粉剂应用程序中,我们需要提供用户选项,以锁定密码应用程序。
据我所知,可湿性粉剂应用生命周期,我需要把导航到LockPage在App.Application_Activated,App.Application_Deactivated和起始页,但我不能使用NavigationService在应用程序类…
我不想把导航代码锁在彼此的页面上,还是没有别的选择?
发布于 2013-03-19 14:13:09
我写了自己的解决方案,但它可能并不像它可能的那样优雅。
应用程序锁定逻辑:用户使用密码启用应用程序锁定,我们在应用程序类中处理Application_Deactivated和Application_Closing事件,如果用户启用此选项,则将应用程序标记为已锁定。然后,在每个页面上,我们应该检查:应用程序当前是否锁定,如果是,我们应该导航到AppLockedWithPasswordPage。在AppLockedWithPasswordPage上,我们需要检查用户的密码,如果是正确的,调用NavigationService.GoBack()。
所以我们需要做6个步骤:
// AppLockedWithPasswordPage protected override void OnBackKeyPress(CancelEventArgs e) { //防止返回密钥导航e.Cancel = true;}单击按钮时
//用户私有void发送者(object (PasswordBox.Password.Equals(IsolatedStorageSettings"AppLockPassword")),AppLockedWithPasswordPage e) { if UnlockAppButton_Click{ NavigationService.GoBack();} else { //说用户密码不正确等...}} App类中的
private void SetIsAppCurrentlyLockedFlagIfUserEnabledAppLocking() { if ((bool)IsolatedStorageSettings"IsUserEnabledAppLockWithPassword") { IsolatedStorageSettings"IsAppCurrentlyLocked“= true;}} private void Application_Deactivated(object sender,DeactivatedEventArgs e) { SetIsAppCurrentlyLockedFlagIfUserEnabledAppLocking();} private void Application_Closing(object sender,ClosingEventArgs e) { SetIsAppCurrentlyLockedFlagIfUserEnabledAppLocking();}
//使用检查方法私有静态Uri PagesUtils.NavigateToAppLockedWithPasswordPageIfAppLocked();= PagesUtils Uri(“uriToAppLockedWithPasswordPage”,UriKind.Relative);公共静态无效页面){ if ((bool)IsolatedStorageSettings"IsAppCurrentlyLocked") { page.NavigationService.Navigate(uriToAppLockedWithPasswordPage);}}创建一些类,如PagesUtils等//在每个页面中添加受保护的覆盖空页面(NavigationEventArgs e) {PagesUtils.NavigateToAppLockedWithPasswordPageIfAppLocked();base.OnNavigatedTo();}
附言:当然真实的代码要好得多,这只是一个简单的例子,我希望它能帮助你
发布于 2013-03-19 02:11:08
您应该在Application_Launching
和Application_Activated
事件中添加检查。
应用程序首次打开时的启动事件,以及用户离开做其他事情后返回应用程序时的激活事件。
让这些事件都设置一个标志,并让所有页面从其继承的基页在导航到时检查此标志。检查是否设置了该标志,如果是,则显示登录提示,并在成功输入密码后清除该标志。
这种方法除了正常启动应用程序外,还将处理FAS,FAR & deep链接。
注意一些选择器在返回应用程序时会触发激活事件。根据需要/适当地为这些添加额外的处理。
发布于 2013-03-18 23:24:22
为什么不创建一个输入密码的起始页呢?
对于有MainPage.xaml的实例,在WMAppManifest上创建一个InsertPasswordPage.xaml引用它作为起始页:
<DefaultTask Name="_default" NavigationPage="InsertPasswordPage.xaml" />
并在InsertPasswordPage.xaml上插入所有密码逻辑,当用户成功登录时,只需导航到您的主页;)
编辑:正如Gambit所说,如果用户按下back按钮,他将返回到insert password页面,但您可以通过在用户登录后从后台堆栈中删除该页面来解决此问题。
https://stackoverflow.com/questions/15476449
复制相似问题