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まだ null であることです。リダイレクト行にブレークポイントを配置し、同じコードを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 に答える