拼命尝试从单独的viewmodel类获取由可观察集合提供的列表视图的索引。
在我的主页中,其中包含listview xaml(名为" mainlist")我有onitemselected方法,需要给我索引。
到目前为止,我一直没有运气。
这是唯一适用的代码,但它也为我提供了空引用说明:
int index = (mainlist.ItemsSource as List<MainListItem>).IndexOf(e.SelectedItem as MainListItem);
说对象引用未设置为对象的实例。
我在这里缺少什么?
这是我创建observablecollection的mainviewmodel.cs
private ObservableCollection<MainListItem> _list;
public ObservableCollection<MainListItem> List
{
get { return _list; }
set
{
_list = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(List)));
}
}
答案 0 :(得分:0)
最终我通过遍历整个列表并计算我自己的索引来解决它,如下所示:我知道必须有更好的方法,但由于我的列表相对较小,这对我很有帮助。
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++;
}
}