从 Xamarin 表单中的列表中删除项目

Removing an item from a list in Xamarin forms

我遇到的问题是,当我从 Xamarin 表单中的列表中删除一行时,我已将其设置为当用户想要删除某些内容时,他们会弹出一个窗口询问他们是否真的想要删除。如果他们按“是”,它会从列表中删除该项目。(不是问题)但如果用户说“否”,它仍然会(温和地)删除该项目,然后您刷新页面,它会回来。我想知道我的代码有什么问题。所以它不会删除项目,除非你按是..

async void OnDeleteBook(object sender, EventArgs e)
{
    var book = (sender as MenuItem).CommandParameter as BooksIWant;

    if (await DisplayAlert("Warning", $"Are you sure you want to delete {book.Author} {book.BookTitle}?", "Yes", "No"))
        await _connection.DeleteAsync(book);
    _booksIWant.Remove(book);
}

您需要使用 {} 创建一个语句块。没有它们,只执行IF之后的语句;

if (await DisplayAlert("Warning", $"Are you sure you want to delete {book.Author} {book.BookTitle}?", "Yes", "No"))
{
  await _connection.DeleteAsync(book);
  _booksIWant.Remove(book);
}

这是基本的 C#,不是 Xamarin 的任何特定内容。

你应该像下面这样编码

async void OnDeleteBook(object sender, EventArgs e){
var book = (sender as MenuItem).CommandParameter as BooksIWant;

if (await DisplayAlert("Warning", $"Are you sure you want to delete {book.Author} {book.BookTitle}?", "Yes", "No")){
    await _connection.DeleteAsync(book);
_booksIWant.Remove(book);}}

Delete 和 Remove 方法调用需要在 if 循环内