C# 按钮删除Xamarin.Forms中的当前ListView行

C# 按钮删除Xamarin.Forms中的当前ListView行,c#,xamarin,xamarin.forms,xamarin.forms.listview,C#,Xamarin,Xamarin.forms,Xamarin.forms.listview,我使用数据绑定从SQLite数据库填充列表视图。我希望用户能够按下一个按钮,当前行被删除 Page1.xaml: <ListView x:Name="recentUserList" Margin="20,0" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"> <ListView.ItemT

我使用数据绑定从SQLite数据库填充
列表视图
。我希望用户能够按下一个按钮,当前行被删除

Page1.xaml:

  <ListView x:Name="recentUserList" Margin="20,0" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
            <ListView.ItemTemplate>
                <DataTemplate >
                    <ViewCell>
                        <Frame Padding="5" Margin="0,0,0,5">
                            <Grid HeightRequest="50" HorizontalOptions="FillAndExpand" VerticalOptions="Start">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <Label Grid.Column="0" Text="{Binding UserName}"/>
                                <Button Grid.Column="3" Text="Delete" Clicked="BtnDelete_Clicked" />
                            </Grid>
                        </Frame>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
数据库:

public List<User> GetUserList()
{
    return database.Query<User>("SELECT * FROM User;");
}
这导致
recentUserList.Remove(用户)中的
Remove
出现以下错误:在Page1.cs中

错误CS7036:未给出与“CollectionExtensions.Remove(IDictionary,TKey,out TValue)”的必需形式参数“value”相对应的参数


如何使其能够单击按钮来删除给定的
列表视图
项目/行?

发件人
对象的类型为
按钮
而非
用户
,尽管在这种情况下
绑定上下文
属性的类型为
用户

private void BtnDelete_Clicked(object sender, EventArgs e)
{
        var btn = sender as Button;
        var user = btn.BindingContext as User;
        //recentUserList.Remove(user);
}

另外,
recentUserList
是一个ui元素(
ListView
),它没有
.Remove()
方法。您需要做的是将它
ItemsSource
绑定到一个
observedcollection
,您将调用.Remove()方法


我强烈邀请您先阅读使用
可观察收集

ObservableCollection<User> users;

protected override void OnAppearing()
{
        base.OnAppearing();
        recentUserList.ItemsSource = users = new ObservableCollection<User>(App.Database.GetUserList());
}
private void BtnDelete_Clicked(object sender, EventArgs e)
{
        var btn = sender as Button;
        var user = btn.BindingContext as User;
        //recentUserList.Remove(user);
}

ObservableCollection<User> users;

protected override void OnAppearing()
{
        base.OnAppearing();
        recentUserList.ItemsSource = users = new ObservableCollection<User>(App.Database.GetUserList());
}
private void BtnDelete_Clicked(object sender, EventArgs e)
{
        var btn = sender as Button;
        var user = btn.BindingContext as User;
        users.Remove(user);
}