我提前道歉,这个很难解释。
我有一个 GridView,里面装满了可选择的图块。进行选择时,通过将 IsOpen 和 IsSticky 设置为 true,将显示底部 AppBar。这工作正常。
但是,当 AppBar 在第一次选择后出现时,它会捕获任何触摸活动,然后在对 AppBar 外部区域进行任何触摸后将其释放,但该触摸手势会被吸收。我最终触摸屏幕两次以执行第二次选择。
在 Windows 8 的开始画面中,您可以无缝选择多个磁贴。出现的底部栏不会干扰后续的触摸手势。但是在我的应用程序中,该栏捕获了第一个手势,我最终选择了第二个图块两次。这让我的应用感觉反应迟钝。
我该如何解决?
要复制这个:
1) 在 Visual Studio 2012 的 Windows Store 下启动一个新的“Grid App (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)运行它并注意在第一次选择之后出现应用栏,但随后您选择第二个图块的第二个手势被吸收了。