1

所以我休息了一下,从 C# 转到 VB 来开发 Windows Phone 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,要解决此问题,用户必须关闭应用程序并重新打开它。

有人可以帮我清理一下吗?谢谢!

4

1 回答 1

1

我不确定我是否理解正确以及其余代码中的内容,但从提供的代码中我发现:

  • 您的应用程序第一次运行时。该行Dim ShowLoginPage As Byte = CByte(AppSettings("StartupLogin"))抛出异常 - StartupLiginAppSettings 中没有,所以它正在添加它,但导航跟随异常被处理。
  • 第二次StartupLigin存在,所以它通过 if 语句

Application_Launching()如果您在 App.xaml.cs中检查了第一次运行,我认为这将是合适的。

我也看不到您保存 AppSettings 的位置 - 如果您希望保留数据,您应该这样做。

于 2014-03-17T06:47:22.917 回答