グリッドビューでタップされたアイテムを取得したいのですが、何らかの理由でitemclickイベントを使用できません。アイテムを取得した後、アイテムが保持するオブジェクトとしても変換したいと思います。グリッドビューにはDataTemplateがあり、tappedイベントでe.OriginalSource値を見ると、それはTextBlockです。誰でも助けることができますか?
5 に答える
私はここで同様の質問に答えました:
Windows 8 Metro:GridViewItemをクリックする方法は?
ユーザーがクリックしたアイテムのGridViewItemオブジェクトを取得しようとしている場合、これは、GridViewのItemContainerGenerator.ContainerFromItemメソッドを使用してGridViewのItemClickイベントによってキャプチャできます。
ステップ1:IsTapEnabled = "True"を有効にし、GridviewでTappedイベントを作成します
<GridView x:Name="categoryItemsGV"
Margin="5,5,0,0"
IsItemClickEnabled="True" IsTapEnabled="True" Tapped="categoryItemsGV_Tapped"
SelectionMode="Single"
ステップ2:このGridViewはTableModelリストとバインドし、タップされたイベントの下にあります
private void categoryItemsGV_Tapped(object sender, TappedRoutedEventArgs e)
{
var selectedTableModel= (TableModel)(sender as GridView).SelectedItem;
}
このselectedTableModelには、選択されたアイテムモデルが含まれています。
アタッチされたビヘイビア(別名WinRTビヘイビア)を使用して、タップされたイベントをビューモデルのコマンドに中継することができます。
以下のコードのように、コントロールListViewの「onItemInvoked」イベントを使用できます。
//item click handler for list view
document.getElementById("yourListViewId").addEventListener("iteminvoked", function(e) {
e.detail.itemPromise.then(function (invokedItem) {
WinJS.Navigation.navigate("url to another pages", { objectToTransfer: invokedItem.data });
});
});
「invokedItem.data」を使用して、ListViewItemが保持するオブジェクトデータ全体を渡します
あなたのはDataContext
あなたTextBlock
が望むものです。