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

时间:2017-05-02 11:45:33

标签: listview xamarin xamarin.forms int selecteditem

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

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

所以我可以做PeopleList.SelectedItem但这会返回一个对象 - 而不是int。

我尝试过解析它,转换以及对我有意义的所有内容。

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

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:0)

我认为您可以搜索列表中的SelectedItem。

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

您已将此收藏夹(在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());

答案 2 :(得分:0)

您的列表视图是lstInfo使用ItemSelected选择列表视图

    var badgesList =
        from bad in db.BadgeAssignments
        join coh in db.CohortProgramEnrollment on bad.CohortProgramEnrollmentID equals coh.CohortSubscriptionId
        join des in db.Badges on bad.BadgeID equals des.Description
        where bad.BadgeID == CohortProgramEnrollmentID
        select new { Badges = des };

    return Json(badgesList.ToList().Select(x => new { 
         x.Badges.CohortProgramEnrollmentID, x.Badges.Description }),
                JsonRequestBehavior.AllowGet);
}
// GET: CohortSubscriptions/Details/5 
[Authorize(Roles = "Administrator, Coach")] 
public ActionResult Details(int? id)
{ 
if (id == null) { 
return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } CohortSubscriptions cohortSubscriptions = db.CohortSubscriptions.Find(id); 
if (cohortSubscriptions == null)
{
 return HttpNotFound(); 
}
 return View(cohortSubscriptions); 
}