2013-12-18 2 views
1

Мне нужно установить некоторые элементы по умолчанию в виде списка, я делаю это событие, загруженное в listpicker. Это работает отлично, затем, когда пользователь меняет эти выборы, я не смог получить results.SelectionChanged событие увольняют до того listpicker загружается событие, если добавить обработчик событий в загруженном методе, удалением его из XAML, я получаю за исключениемУстановка нескольких элементов, выбранных по умолчанию для выбора списка - режим множественного выбора -windows phone

необработанное исключение типа «System.InvalidOperationException» произошло в System.Windows.ni.dll

Вот мой код ..

private void interestms_Loaded(object sender, RoutedEventArgs e) 
     { 
//selectedinterests is a string containing keys of selected interests seperated by commas. 
      object[] split1 = selectedinterests.Split(','); 
//interest is a dictionary with total list of interests 
      var s = PhoneApplicationService.Current.State["interest"]; 

      List<object> finallist = new List<object>(); 
      var ss = (((System.Collections.Generic.Dictionary<string, string>)(s))).Keys; 
      List<object> arr = new List<object>((((System.Collections.Generic.Dictionary<string, string>)(s))).Values); 
      for (int k = 0; k < split1.Length; k++) 
      { 
       object getsel = arr[k]; 
       finallist.Add(getsel); 
      } 

     interestms.SelectedItems = hello; 
     } 

На SelectionChange случая, я получаю те элементы, которые были кликали, а не те предметы, которые были проверены, поэтому, когда я сними извлеченную деталь, то этот пункт также будет добавлен в selectedItems. В этом случае мне нужно создать два массива объектов: один, содержащий полный набор значений, и другие выбранные элементы и удалить общие элементы в обоих. При этом selectionChanged метод вызывается перед загруженным событием.

Пожалуйста help.In случае требуется любая другая деталь, я был бы рад предоставить ..

EDIT:

private void interestms_SelectionChanged(object sender, SelectionChangedEventArgs e) 
      { 
//edited interst is an array object 
       editedinterests.Add(e.AddedItems); 
       var s = PhoneApplicationService.Current.State["interest"]; 

       List<object> arr = new List<object>((((System.Collections.Generic.Dictionary<string, string>)(s))).Values); 

       var listcommon = arr.Intersect(editedinterests); 
    } 
+0

могли бы вы предоставить фрагменты кода выбора измененного события – Jaihind

+0

@Jaihind Да, я добавил его. –

ответ

1

Попробуйте

private void interestms_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if(interestms.SelectedIndex==-1) return; 

    //Here may be you get all selected items no need to maintain two array if you get all selected items. 
    var listcommon = (cast as your type)interestms.SelectedItems; 
    interestms.SelectedIndex=-1; 
} 
+0

Я пробовал этот код, Это событие запускается перед событием interestms_loaded и возвращает меня к корневому кадру na vigation failed debugger .. Когда я удаляю проценты.SelectedIndex = -1; Исключение операции getystem.invalid –

+0

@PrasannaAarthi Удалить Interestms_Loaded событие из xaml и инициализировать проценты_Loaded после InitializeComponent(); метод в коде за – Jaihind

+0

Спасибо, он работает !! –

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