ListView
文字列だけでなく、オブジェクトにバインドできます。そうすると、アイテムをクリックすると、オブジェクトが返されます。あなたの場合、オブジェクトにバインドできます。これにはandフィールド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 のバインドと編集