1

我有一个文件在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但未在用户代码中处理。

4

3 回答 3

1

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

正如我所料,这只是一个重定向页面,您可以在初始化中检查文件并保存 uri 以在类中重定向并在页面加载时重定向

于 2013-03-22T10:49:33.303 回答
1

是否尝试在 MainPage 加载时调用文件存在检查?即使它正在执行,这也可能是存储准备问题。其次,如果您可以提及确切的异常发生在哪里。还要检查这个可能对你有帮助的链接。

于 2013-03-22T10:36:46.387 回答
0

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

protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            fileExists();
        }
于 2013-03-22T10:57:33.570 回答