Индекс наблюдаемых коллекций и списков хамариновых форм - PullRequest
0 голосов
/ 23 мая 2018

Отчаянно пытаясь получить индекс списка, который подается наблюдаемой коллекцией из отдельного класса viewmodel.

на моей главной странице, которая содержит список xaml (называемый "mainlist"), у меня есть onitemselectedметод, который должен дать мне индекс.

Я пока что все безуспешно попробовал.

Это единственный применяемый код, но он также дает мне исключение нулевой ссылки:

            int index = (mainlist.ItemsSource as List<MainListItem>).IndexOf(e.SelectedItem as MainListItem);

Говорят, что ссылка на объект не установлена ​​для экземпляра объекта.

Что мне здесь не хватает?

Это мой mainviewmodel.cs, который создает наблюдаемую коллекцию

private ObservableCollection<MainListItem> _list;

        public ObservableCollection<MainListItem> List
        {
            get { return _list; }
            set
            {
                _list = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(List)));
            }
        }

1 Ответ

0 голосов
/ 23 мая 2018

В конце концов я решил эту проблему, перебрав весь список и рассчитав свой собственный индекс, как показано ниже: я знаю, что должен быть лучший способ, но, поскольку мой список относительно мал, это хорошо мне помогает.

int index = 0;
int i = 1;

foreach (MainListItem itemtocheck in mainlist.ItemsSource as ObservableCollection<MainListItem>)
                {
                    if(itemtocheck == e.SelectedItem)
                    {
                        index = i;
                        Debug.WriteLine("Index is " + index);
                        break;
                    }
                    else
                    {

                        Debug.WriteLine("No match for index at " + i);
                        i++;
                    }

                }
...