あらかじめお詫び申し上げますが、これは説明が難しいです。
選択可能なタイルでいっぱいのGridViewがあります。選択すると、IsOpenとIsStickyをtrueに設定すると、下部のAppBarが表示されます。これは正常に機能します。
ただし、最初の選択後にAppBarが表示されると、タッチアクティビティがキャプチャされ、AppBarの外側の領域にタッチすると解放されますが、そのタッチジェスチャは吸収されます。画面を2回タッチして、2回目の選択を実行します。
Windows 8のスタート画面では、複数のタイルを次々とシームレスに選択できます。表示される下部のバーは、後続のタッチジェスチャに干渉しません。しかし、私のアプリ内では、バーが最初のジェスチャをキャプチャし、2番目のタイルを2回選択することになります。アプリが反応しなくなったように感じます。
これを修正するにはどうすればよいですか?
これを複製するには:
1)Visual Studio 2012のWindowsストアで新しい「グリッドアプリ(XAML)」を起動します。
2)GroupedItemsPage.xamlで、次のXAMLを追加します。
<Page.BottomAppBar>
<AppBar>
<Button Content="X"/>
</AppBar>
</Page.BottomAppBar>
3)x:Name = "itemGridView"でGridViewを見つけ、そのSelectionMode="Extended"とIsSwipeEnabled="true"を設定します
<GridView
x:Name="itemGridView"
AutomationProperties.AutomationId="ItemGridView"
AutomationProperties.Name="Grouped Items"
Grid.RowSpan="2"
Padding="116,137,40,46"
ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}"
SelectionMode="Extended"
IsSwipeEnabled="true"
IsItemClickEnabled="True"
ItemClick="ItemView_ItemClick">
4)コードビハインドファイルに次のコードを追加します。
public GroupedItemsPage()
{
this.InitializeComponent();
itemGridView.SelectionChanged += ItemGridViewOnSelectionChanged;
}
private void ItemGridViewOnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (itemGridView.SelectedItems.Count > 0)
{
this.BottomAppBar.IsOpen = true;
this.BottomAppBar.IsSticky = true;
}
else
{
this.BottomAppBar.IsSticky = false;
this.BottomAppBar.IsOpen = false;
}
}
5)それを実行し、最初の選択の後にアプリバーが表示されるのを確認しますが、2番目のタイルを選択するための2番目のジェスチャは吸収されます。