【发布时间】:2021-02-02 07:22:01
【问题描述】:
我正在使用数据绑定从 SQLite 数据库中填充 ListView。我希望用户能够按下按钮并删除当前行。
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>
Page1.cs:
protected override void OnAppearing()
{
base.OnAppearing();
recentUserList.ItemsSource = App.Database.GetUserList();
}
private void BtnDelete_Clicked(object sender, EventArgs e)
{
var user = sender as User;
recentUserList.Remove(user);
}
数据库:
public List<User> GetUserList()
{
return database.Query<User>("SELECT * FROM User;");
}
用户.cs:
public class User: INotifyPropertyChanged
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
private string userName;
public string UserName
{
get
{
return userName;
}
set
{
if (userName!= value)
{
userName = value;
OnPropertyChanged("UserName");
}
}
}
}
这会导致 Page1.cs 中 recentUserList.Remove(user); 中的 Remove 出现以下错误。
错误 CS7036:没有给出与 'CollectionExtensions.Remove
(IDictionary , TKey, out TValue)' 的所需形式参数 'value' 相对应的参数
我怎样才能使它可以单击按钮删除给定的ListView 项目/行?
【问题讨论】:
标签: c# xamarin xamarin.forms xamarin.forms.listview