GridView の問題点について
※この記事では問題が解決しているように書かれていますが、まだ問題点がある事がわかりました。以下の記事を参照してください。
Release Preview における GridView の問題点 (1) - rebuild
以前から、何度か Visual Studio 11 Beta のテンプレートで生成したプロジェクトでの GridView や ListView の問題点について書いてきましたが、Windows 8 の Release Preview と同時に Visual Studio 2012 RC も公開されましたので、問題点が解決しているか確認してみました。
Visual Studio 2012 RC で Grid App のテンプレートを生成して動作を見てみたところ、マウスホイールでのスクロースもキーボードによるカレントアイテム移動に合わせたスクロールも行われるようになっていました。
生成された xaml を見てみると GridView が ScrollViewer の中ではなく単体で配置されるようになっています。単体で配置されていますので、確認はしていませんが仮想化も行われるようになっていると思われます。
<GridView x:Name="itemGridView" AutomationProperties.AutomationId="ItemGridView" AutomationProperties.Name="Grouped Items" Grid.Row="1" Margin="0,-3,0,0" Padding="116,0,40,46" ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}" ItemTemplate="{StaticResource Standard250x250ItemTemplate}" SelectionMode="None" IsItemClickEnabled="True" ItemClick="ItemView_ItemClick">
また、単体で配置した時のマージンについては、 Padding に設定した値が GridView 内の ScrollViewer と ItemsPresenter との間に間隔を空けるために使用されるようになったようです。
この対応によりテンプレートからの生成後に対策を行う必要なくなり、以降はテンプレートから生成した物をそのまま使用してアプリを作成していけば問題ないと思います。