がりらぼ

WindowsRuntimeの応援ブログ

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

通常、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に渡されるのでクリックしたアイテムを検知できます。