C# 按钮删除Xamarin.Forms中的当前ListView行
我使用数据绑定从SQLite数据库填充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
列表视图
。我希望用户能够按下一个按钮,当前行被删除
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);
}