首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IsolatedStorageSettings和NavigationService误差

IsolatedStorageSettings和NavigationService误差
EN

Stack Overflow用户
提问于 2014-03-17 01:56:31
回答 1查看 112关注 0票数 1

因此,我休息了一下,从C#到VB开发Windows 8应用程序。这只是个测试,我有个很奇怪的问题。

首先,我的基本场景是,我有A页和B页。在进入B页之前,用户必须填写几个细节。只有当用户已经填写了A页中的信息时,才会显示B页,这有点像第一次运行。

我所做的就是添加了以下代码:

代码语言:javascript
复制
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“是一种检查。在这里:

代码语言:javascript
复制
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,现在这种方式很好。没问题。按照我想要的方式工作。

现在我添加了一个设置页面。在一个设置中,用户可以决定是否显示登录页。如果它是“关闭”那么显然它将不会被显示和继续..。

我补充说:

代码语言:javascript
复制
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,要解决这个问题,用户必须关闭应用程序并重新打开它。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-17 06:47:22

我不确定我是否正确地理解了代码的其余部分,但从提供的代码中可以看出:

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

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

我也不知道您在哪里保存您的AppSettings -如果您想要保存您的数据,您应该这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22445697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档