因此,我休息了一下,从C#到VB开发Windows 8应用程序。这只是个测试,我有个很奇怪的问题。
首先,我的基本场景是,我有A页和B页。在进入B页之前,用户必须填写几个细节。只有当用户已经填写了A页中的信息时,才会显示B页,这有点像第一次运行。
我所做的就是添加了以下代码:
Private Sub createbtn_Click(sender As Object, e As RoutedEventArgs) Handles createbtn.Click
'...
IsoSettings.Add("AccountCreated", Nothing)
NavigationService.Navigate(New Uri("/MainMenu.xaml", UriKind.Relative))
NavigationService.RemoveBackEntry()
End Sub一旦用户点击“创建帐户”按钮。他将被导航到页面B,此后用户将不必填写A页中的信息。"AccountCreated“是一种检查。在这里:
Protected Overrides Sub OnNavigatedTo(e As NavigationEventArgs)
If IsoSettings.Contains("AccountCreated") Then
NavigationService.Navigate(New Uri("/MainMenu.xaml", UriKind.Relative)) 'Page B
NavigationService.RemoveBackEntry()
Else
NavigationService.Navigate(New Uri("/MainPage.xaml", UriKind.Relative)) 'Page A
End If
End Sub因此,基本上,检查并查看IsoSettings是否包含"AccountCreated“,然后将用户带到B页,如果不带他到页面A,现在这种方式很好。没问题。按照我想要的方式工作。
现在我添加了一个设置页面。在一个设置中,用户可以决定是否显示登录页。如果它是“关闭”那么显然它将不会被显示和继续..。
我补充说:
If IsoSettings.Contains("AccountCreated") Then
Try
Dim ShowLoginPage As Byte = CByte(AppSettings("StartupLogin"))
If ShowLoginPage = 0 Then
NavigationService.Navigate(New Uri("/LoginPage.xaml", UriKind.Relative))
NavigationService.RemoveBackEntry()
ElseIf ShowLoginPage = 1 Then
NavigationService.Navigate(New Uri("/MainMenu.xaml", UriKind.Relative))
NavigationService.RemoveBackEntry()
End If
Catch ex As KeyNotFoundException
AppSettings.Add("StartupLogin", 0)
End Try
Else
NavigationService.Navigate(New Uri("/MainPage.xaml", UriKind.Relative))
End If这就是问题发生的地方。所以当用户第一次运行这个应用程序时。他必须通过页面A,他填写了信息,然后被导航到登录页面。现在,一旦用户在登录页面中登录或刚刚关闭应用程序并重新打开它,用户就会被导航到页面A,要解决这个问题,用户必须关闭应用程序并重新打开它。
有人能帮我清理一下吗?谢谢!
发布于 2014-03-17 06:47:22
我不确定我是否正确地理解了代码的其余部分,但从提供的代码中可以看出:
Dim ShowLoginPage As Byte = CByte(AppSettings("StartupLogin"))抛出异常-- AppSettings中没有StartupLigin,所以它正在添加它,但导航跟随异常被手动处理。StartupLigin第二次存在,因此它可以通过if语句我认为,如果您在Application_Launching() in App.xaml.cs中检查了第一次运行,将是合适的。
我也不知道您在哪里保存您的AppSettings -如果您想要保存您的数据,您应该这样做。
https://stackoverflow.com/questions/22445697
复制相似问题