2012-01-31 14 views
0

私はWP7用のアプリケーションを開発していますが、ListboxイベントコールSelection_Changeで少し問題が発生しました。問題は、リストボックスを含むページに戻るとき、selection_changeイベントが、ユーザー入力を全く伴わずに、または全く変更せずにトリガーすることです。リストボックスのコードは次のようになります。私はにナビゲートページでWindows Phone 7 Selection_Changed自動的に

private void lsbHistory_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    int index = lsbHistory.SelectedIndex; 
    NavigationService.Navigate(new Uri("/Views/NextPage, UriKind.Relative)); 
} 

、ナビゲートページのうち唯一の方法は、戻るボタンを押すか、リストボックスを含むページに戻りますことを、ボタンの意味を開始することです。私が選択変更の後ろをナビゲートすると、私を時々例外に導く。誰もこれまでにこれを経験していますか?

答えて

2

-1(デフォルト値)かどうかを常に確認してください。

private void lsbHistory_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    int index = lsbHistory.SelectedIndex; 
    if (index != -1) 
    { 
     NavigationService.Navigate(new Uri("/Views/NextPage, UriKind.Relative)); 
     lsbHistory.SelectedIndex = -1; // Set it to -1, to enable re-selection. 
    } 
} 

また、あなたはより良い、よりスムーズに、ページ遷移を持つようにDispatcher.BeginInvokeNavigate呼び出しをラップ検討すべきです。

+0

ありがとうございました。それは自動的に選択されると、インデックスが0に設定されています:(。決してディスパッチャーを使ってそれを推測することは考えていませんでした:D –

+0

@ mikael-koskinenが書いたものを読んでください。 –

+0

Hey Clausは別のアプリを開発していましたが、同じ問題が発生しました。別のページに移動してリストボックス項目をクリックして戻ると、新しい項目ソースをリストボックスのselection_changedに戻ります。もし(index> -1)なら、それはnullreferrence例外をスローします。ありがとうございますClaus:D –

1

リストにデータが入力されると、イベントが発生します。

あなたのための最も簡単な解決策は、おそらくあなたのナビゲーションをトリガする前に何も選択されていないことを確認を追加することになります。注意すべき

if (lsbHistory.SelectedIndex > -1) 
{ 
    // do navigation 
} 
1

一つは、あるページに戻ってをナビゲートするときたcontaintことListBox、ListBox は、SelectedItemをユーザーがナビゲートしたときの値と同じ値のに設定しています。つまり、lsbHistory.SelectedIndexは、ユーザーが前方にナビゲートしたときに選択された項目の索引を取得します。

ユーザーがページに移動したときにListBoxのSelectedItemがnullであると推測するコードがありますか?

+0

私は思い出しませんが、 –

関連する問題