Windows Phone 8 - 导航错误

时间:2013-03-22 10:11:35

标签: c# navigation windows-phone isolatedstorage

我在IsolatedStorage中有一个文件。如果文件存在,我想重定向到登录页面或创建帐户页面。

如果文件不存在,应用程序将转到“创建”页面,创建并保存密码,并且应用程序将重定向到“登录”页面。但是,如果IsolatedStorage中的文件存在,则不会指向。

private void fileExists()
        {
            IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
            if (store.FileExists("passwordFile"))
            {
                //NavigationService.Navigate(new Uri("/Login.xaml", UriKind.Relative));
                MessageBox.Show("Should be redirecting here");
            }

            else
            {
                MessageBox.Show("Welcome. Please create an account. Ensure that you remember your password!");
            }
        }

实际的消息确实显示正在被调用,如果文件不存在,则执行else,这样我的逻辑就是正确的。

此处调用FileExists()函数。

public MainPage()
        {
            InitializeComponent();
            fileExists();
        }

其他重定向发生在这里

if ((password1.Password == password2.Password) & (password1.Password.Trim().Length > 0 || password2.Password.Trim().Length > 0))
            {
                byte[] PasswordByte = Encoding.UTF8.GetBytes(password1.Password);
                byte[] ProtectedPassword = ProtectedData.Protect(PasswordByte, null);
                this.WritePasswordToFile(ProtectedPassword);

                NavigationService.Navigate(new Uri("/Login.xaml", UriKind.Relative));
            }

错误是System.NullReferenceException,但未在用户代码中处理。

3 个答案:

答案 0 :(得分:1)

有没有试过调用文件存在检查MainPage加载?这可能是存储准备问题,即使它正在执行。其次,如果你能提到发生确切异常的地方。另外,请检查可能对您有用的link

答案 1 :(得分:1)

问题是NavigationService仍然为空,您可以通过在重定向行上放置断点来验证它, 在MainPage.Loaded事件中放入相同的代码然后它将起作用(我希望它能够工作)

因为我希望这只是一个重定向页面,你可以在初始化中检查文件并保存uri以在类中重定向并在页面加载时重定向

答案 2 :(得分:0)

我需要将fileExists()从构造函数移动到新函数。

protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            fileExists();
        }