IsolatedStorageSettings和NavigationService错误

时间:2014-03-17 01:56:31

标签: vb.net windows-phone-8 isolatedstorage navigationservice

所以我休息一下,在开发Windows Phone 8应用程序时从C#转到VB。这只是一个测试,我有这个非常奇怪的问题。

首先,我的基本场景是我有Page A和Page B.用户必须在转到第B页之前填写一些细节。只有在用户填写完信息后才会显示。页面A,有点像第一次运行。

我所做的是我添加了这段代码:

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

现在问题就出现了。因此,当用户首次运行此应用程序时。他必须浏览Page A.他填写信息,然后导航到登录页面。现在,一旦用户登录或只是在登录页面中关闭应用程序并重新打开它,用户就会导航到页面A,修复此问题,用户必须关闭应用程序并重新打开它。

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

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解正确以及其余代码中的内容是什么,但从提供的内容中可以看出:

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

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

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