我完全坚持这个。
我有一个在XAML代码中定义的ListView,但我需要找出我正在点击的所选项目的int
。
我的列表视图名为PeopleList
当我点击一个单元格时,我需要得到该单元格的索引号。
所以我可以做PeopleList.SelectedItem
但这会返回一个对象 - 而不是int。
我尝试过解析它,转换以及对我有意义的所有内容。
有人可以告诉我如何获取selectedItem的int吗?
答案 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);
}