がりらぼ

WindowsRuntimeの応援ブログ

GridViewでアイテムクリックを検知する


f:id:garicchi:20120818232010p:image通常、GridViewはItemClickでは検知できません。

<GridView Name="gridViewMain" HorizontalAlignment="Left" VerticalAlignment="Top"

Grid.Row="1" Grid.Column="1"

ItemsSource="{Binding Source={StaticResource itemViewSource}}"

ItemTemplate="{StaticResource Standard250x250ItemTemplate}"

AutomationProperties.AutomationId="ItemGridView"

AutomationProperties.Name="Grouped Items"

SelectionMode="None"

IsItemClickEnabled="True"

ItemClick="gridViewMain_ItemClick"

>

IsItemClickEnabledをTrueにすることでItemClickイベントが発生します。

通常IsItemClickEnabldはFalseなのでSelectionChangedで検知する必要がありますが、selectionChangedイベントはGridViewが初回起動時にもイベントが発生するのでIsItemClickEnabledをTrueにするのが得策です。

クリックしたアイテムの取得方法は、ItemClickEvenArgsのインスタンスにGridViewのアイテムのクラスに格納されています。

private void gridViewMain_ItemClick(object sender, ItemClickEventArgs e)

{

var item = (Item)e.ClickedItem;

}


Itemは自作のクラスですが、GridViewでグルーピング表示には、
一個ずつのアイテムのクラスをグルーピングし、さらにそれをグルーピングしてバインドしたと思います。
それの最小単位のクラス(一個ずつのアイテムのクラス)がe.ClickedItemに渡されるのでクリックしたアイテムを検知できます。