2013-06-09 8 views
1

ListPicker является управление из Кодекса WP8 Toolkit.ListPicker SelectionChanged вызывается несколько раз

:

private void field_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    // Make sure we don't handle the event during initiation. 
    if (e.RemovedItems != null && e.RemovedItems.Count > 0) 
    { 
     if (this.field.SelectedItems != null) 
     { 
      if (this.field.SelectedIndex != -1) 
      { 
       ListPicker_SelectionChanged(sender, e); 
       //Make needed proffesions visable: 
       profls.Clear(); 
       foreach (ListPickItem item in field.SelectedItems) 
        switch (item.Tag) 
        { 
         default: 
          foreach (ListPickItem iitem in profl[9]) 
           profls.Add(iitem); 
          break; 
         case 90017: 
          foreach (ListPickItem iitem in profl[0]) 
           profls.Add(iitem); 
          break; 
         case 9000: 
          foreach (ListPickItem iitem in profl[1]) 
           profls.Add(iitem); 
          break; 
        } 
      } 
     } 
    } 
} 
  • Пожалуйста, обратите внимание, что ItemsSource profession ListPicker является переплетены данных в profls вар.
  • Я изменил Listpicker так, чтобы я мог также установить свойство SelectedItems, а не только читать его (в соответствии с руководством this), и он отлично работает.

Проблема:

field_SelectionChanged событие вызывается несколько раз, когда я изменить SelectedItems в field listpicker в. (Я хочу, чтобы назвать только один раз ..) Еще одна вещи странно, что на одном из последних вызовов field_SelectedItems равно старых SelectedItems (те, до «смены») ..

ли это ошибка или моя проблема? (Как я могу это исправить?)


EDIT:

Я проверил и кажется, что он вызывается только один раз, если не выбраны элементы в listpicker, прежде чем я выбираю пункты. (Я имею в виду, что SelectedItems пуста, прежде чем я выбираю новые пункты)

+0

Можете ли вы показать код, на котором вы подписаны на событие «SelectionChanged»? –

+0

@MatthewWatson Это в XAML –

ответ

2

Я был один и тот же вопрос о событии selectedchange вызывается дважды. В конце события listPicker_selectedchange установите для выбранного списка listpicker значение -1.

private void listpicker_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    //Code 
    listpicker.SelectedIndex = -1; 
} 

Спасибо Dan Barzilay !!

Смежные вопросы