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");
};
我完全坚持这一点。
我在 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");
};