从列表视图获取数据
本文关键字:数据 获取 视图 列表 | 更新日期: 2023-09-27 18:17:50
我从我的sqlite数据库中填充我的listview
private async void getBowlers()
{
SQLiteAsyncConnection conn = new SQLiteAsyncConnection(BOWLERS_DATABASE);
var query = conn.Table<Bowler>();
var result = await query.ToListAsync();
List<String> names = new List<String>();
foreach (var item in result)
{
names.Add(item.Name);
}
itemListView.ItemsSource = names;
}
当我单击列表中的一个项目时,我如何获得与所单击的项目相关联的数据?
因为我只是用字符串列表填充列表,我真的不知道如何与它关联任何数据,所以有另一种方式来填充我的列表视图?即使只获取ID
也可以然后我可以根据ID
您可以将ListView
绑定到一个对象,而不仅仅是一个字符串。如果您这样做,当单击一个项目时,您将获得该对象。在您的示例中,您可以绑定到Bowler
对象,我假设它具有ID
和Name
字段:
public class Bowler
{
public int Id { get; set; }
public string Name { get; set; }
}
在XAML中,您必须告诉ListView
您想要绑定Name
字段。下面是一个简单的ListView
,每个项目只有一个TextBlock
:
<ListView x:Name="itemListView" ItemsSource="{Binding}"
IsItemClickEnabled="True" ItemClick="itemListView_ItemClick">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
在上面,TextBlock
将显示Name
字段。
要将项目加载到列表中,您可以将上面的方法更改为如下内容:
// Unrelated, but generally you want to use "async Task"
// in the method signature. "async void" should only be used by
// event handlers, such as a click event.
private async Task getBowlers()
{
SQLiteAsyncConnection conn = new SQLiteAsyncConnection(BOWLERS_DATABASE);
var query = conn.Table<Bowler>();
var result = await query.ToListAsync();
// set page's data context to bowler collection
this.DataContext = result;
}
现在,当一个项目被点击,你会得到相关的Bowler
对象:
private void itemListView_ItemClick(object sender, ItemClickEventArgs e)
{
Bowler bowler = (Bowler)e.ClickedItem;
// do something with bowler...
}
更多信息:Windows 8 Metro应用程序ListView绑定和编辑