Настройка нескольких элементов, выбранных по умолчанию для выбора списка - режим множественного выбора - Windows Phone

Мне нужно установить некоторые элементы как выбранные по умолчанию в представлении списка, я делаю это событие загрузки списка выбора. Это работает нормально, затем, когда пользователь изменяет эти выборы, я не могу получить результаты. Событие SelectionChanged запускается до события загрузки списка выбора, Если я добавляю обработчик событий в загруженный метод, удаляя его из XAML, я получаю исключение

Необработанное исключение типа "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 вызывается перед загруженным событием.

Пожалуйста, помогите. В случае необходимости каких-либо других деталей, я был бы рад предоставить..

РЕДАКТИРОВАТЬ:

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);
    }

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;
}
Другие вопросы по тегам