问题描述
我目前正在开发 Xamarin 表单应用程序。这个想法是从 API 获取数据,用户将能够查看食谱、将其添加到收藏夹和搜索。
我在显示我的收藏夹项目列表时遇到了一些问题。我无法将我的数据查看到我的列表中,不确定我是否正确插入到表格中。我会尽可能多地发布相关代码。我将不胜感激:)
public void Button_Clicked(System.Object sender,System.EventArgs e)
{
//add to favoritelist
dbModel.insertNewTodo(temp);
}
这里是insertNewTodo函数DBManager.cs
private sqliteAsyncConnection _connection;
private ObservableCollection<Pancake>temp;
public DBManager()
{
_connection = DependencyService.Get<IsqliteDb>().GetConnection();
}
public async Task<ObservableCollection<Pancake>> CreateTable()
{
await _connection.CreateTableAsync<Pancake>();
//get
var pancake = await _connection.Table<Pancake>().ToListAsync();
var allTasks = new ObservableCollection<Pancake>(pancake);
return allTasks;
}
这是最喜欢的页面应该显示煎饼列表但没有:/ :((( FavePage.xaml.cs
ObservableCollection<Pancake> allPancakes;
public FavePage()
{
InitializeComponent();
}
protected async override void OnAppearing()
{
allPancakes = await dbModel.CreateTable();
allFaveTable.ItemsSource = allPancakes;
base.OnAppearing();
}
这里是 FavePage.xaml
<StackLayout>
<StackLayout Orientation="Horizontal">
<Button Text="Delete" />
</StackLayout>
<ListView x:Name="allFaveTable">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding Name}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
解决方法
看起来您还没有将 ListView 的 ItemsSource 绑定到 observable 集合。将 ObservableCollection 设为包含 StackLayout 的页面的公共属性,并在 ListView 中使用 x:Bind 将 ListView 的 ItemsSource 绑定到 ObservableCollection。