2012-03-06 11 views
2

私はいくつかの項目を持つリストボックスを持っています。そして、選択された変更イベントは、関数にマップされています。しかし、私がリストアイテムを選択するたびに、イベントは2回トリガされています。結果として、私は第2ラウンドで-1として選択されたインデックスを取得しています。WindowsのリストボックスのSelectionchangedイベントに関する問題

誰もがこの動作の理由を知っていますか?
XAMLコード

&ltListBox ItemTemplate="{StaticResource productTemplate}" Name="lstItems" SelectionChanged="ShowProductDetails"> 


C#コード


private void ShowProductDetails(object sender, SelectionChangedEventArgs e) 
{ 
    Item item = lstItems.SelectedItem as Item; 
    int index = lstItems.SelectedIndex; 
} 
+0

これは正しくはありません。コードの関連ビットを表示しなければなりません。 – ColinE

+0

リストボックスアイテムが選択された直後に選択解除されているように聞こえます - コードを表示して助けてくれるかもしれません – Stuart

+1

アイテムが選択されていないため-1です。これは、ListBoxがリフレッシュまたは再生成されたか、または基本的にListBoxをリセットするためです。 – abhinav

答えて

6

変更イベントが毎回発生しあなたがリストボックスをリロードすると選択

(ユーザ入力からかのいずれか)が変更された選択選択肢が変更されます(ほとんどの場合-1)

このコードでは、ユーザーが何かを選択したことを確認します(有効なインデックスを持つアイテム、つまり-1でないアイテム)。

private void ShowProductDetails(object sender, SelectionChangedEventArgs e) 
    { 
     if(lstItems.SelectedIndex != -1) 
     { 
      Item item = lstItems.SelectedItem as Item; 
      int index = lstItems.SelectedIndex; 
     } 
    } 
+0

この回答はマークする必要があります! –

関連する問題