Xamarin Forms - 如何从 ListView SelectedItem 获取索引号

Xamarin Forms - How to get the index number from ListView SelectedItem

我完全坚持这一点。 我在 XAML 代码中定义了一个 ListView,但我需要找出我正在点击的所选项目的 int

我的列表视图名为 PeopleList 当我点击一个单元格时,我需要获取该单元格的索引号。

所以我可以 PeopleList.SelectedItem 但是这个 returns 是一个对象 - 不是一个整数。

我已尝试对其进行解析和转换以及对我来说逻辑上有意义的所有内容。

有人可以告诉我如何获取 selectedItem 的整数吗?

我想你可以在你的列表中搜索 SelectedItem。

例如,在您的 ViewModel 中您有一个 ObservableCollection(例如 MyList)。

您已将此 Collection 绑定(在 Xaml 中)到您的 PeopleList

然后你可以做类似的事情

int myindex = MyList.IndexOf(SelectedItem);

例如

    ObservableCollection<string> l = new ObservableCollection<string>();
    l.Add("AAA");
    l.Add("BBB");
    l.Add("CCC");
    int idx = l.IndexOf("BBB");
    System.Diagnostics.Debug.WriteLine("idx = " + idx.ToString());

在您的 ItemTapped 事件的事件处理程序中,执行以下操作:

private void Handle_ItemTapped (object sender, Xamarin.Forms.ItemTappedEventArgs e)
{
    var index = (myListView.ItemsSource as List<Person>).IndexOf (e.SelectedItem as Person);
}

确保 collection 的类型正确。 这不是最优雅的方式,但它确实有效。

您的列表视图是 lstInfo 使用 ItemSelected 用于 select 列表视图

lstInfo.ItemSelected += (sender, e) =>
                {
                    //get all data in you row in the listview "lstinfo"
                    //And MFoto is you Model {get; set}
                    var item = e.SelectedItem as MFoto;

                    //View id for you listview
                    DisplayAlert("Data", item.Id, "OK");

                };