【发布时间】:2015-10-27 19:03:42
【问题描述】:
这是一个在从ListView 中选择项目时调用的函数:
async void detail_clicked(object sender, SelectedItemChangedEventArgs e){
if (e.SelectedItem == null) {
return;
}
Detail selected = (Detail)e.SelectedItem;
order_vm.List_of_details.Add(selected);
await DisplayAlert ("Item Added",
String.Format ("{0} added to cart.", selected.detail_name), "Okay");
((ListView)sender).SelectedItem = null;
}
我使用ItemSelected 事件处理程序添加了这个函数
details_list.ItemSelected += detail_clicked;
当我第一次点击项目时,DisplayAlert 会弹出。第一次点击后,detail_clicked里面的DisplayAlert不再弹出。但是处理程序中的其他代码确实被调用了。
有人知道如何解决这个问题吗?我对事件处理程序不了解吗?是关于等待/异步的吗?
【问题讨论】:
-
您是否尝试过将
ItemTapped事件用于ListView?正如here 所提到的,这两个事件的实现存在差异。我通常总是使用ItemTapped来监听用户点击ListView中我希望做某事的元素的事件(例如,导航到新页面以编辑项目,打开显示警报以删除项目等) -
是的,除了将此函数附加到
ItemTapped事件之外,我尝试了相同的过程,并且得到了相同的结果。有什么想法吗?
标签: android listview async-await xamarin.android xamarin.forms