这是从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
。首次点击后,DisplayAlert
内的detail_clicked
不再弹出。但是处理程序中的其他代码会被调用。
任何人都知道如何解决此问题?这是我对事件处理程序不了解的事情吗?它是关于await / async吗?
答案 0 :(得分:0)
DisplayAlert可能正在另一个线程上运行。尝试在Device.BeginInvokeOnMainThread
中包装显示提醒。您可以准备好here。
答案 1 :(得分:0)
请在没有异步方法的情况下再次检查并等待DisplayAlert()。
答案 2 :(得分:0)
使用以下代码。它会帮助你。
private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
if (e.SelectedItem == null)
{
return;
}
listView.SelectedItem = null;
DisplayAlert("Alert", e.SelectedItem.ToString(), "Ok");
}