我想在gridviewitem上显示一个简单的弹出菜单。根据这篇文章:https://blogs.msdn.microsoft.com/winuiautomation/2016/01/01/ten-questions-on-programmatic-accessibility/,(第6段)你应该能够为doubletapped事件设置一个处理程序。我也在windows phone ui中测试过它。
问题在于,在我的应用程序中,当激活叙述者时,在执行双指双击手势时,双击处理程序永远不会被调用。
我尝试在gridview中执行此操作:
<GridView x:Name="ImgGrid"
ItemsSource="{x:Bind AllFiles, Mode=OneWay}"
IsItemClickEnabled="True"
SelectionMode="None"
Background="{ThemeResource PaneBackgroundBrush}" Padding="8"
ItemClick="ImgGrid_ItemClick"
ItemContainerStyle="{StaticResource GridViewItemContainerStyle}"
IsDoubleTapEnabled="True"
DoubleTapped="ImgGrid_DoubleTapped">
正如您所看到的,启用了doubletapped标记,并为doubletapped事件附加了一个处理程序。但它并没有用双指双击手势调用。但是,在非移动设备上,通过右键单击gridview项来调用处理程序。
我还尝试将eventhandler放在gridviewitem本身上:
<DataTemplate x:DataType="data:KNFBFileInfo">
<Grid x:Name="ThumbnailContainer"
Margin="8"
Width="80"
Background="Transparent"
MinHeight="100"
Height="Auto"
Holding="ThumbnailContainer_Holding"
RightTapped="ThumbnailContainer_RightTapped">
与我尝试的第一件事相同......
开发人员如此难以制造,真是太遗憾了 他的应用程序可访问
答案 0 :(得分:0)
我刚在DataTemplate
<DataTemplate x:Name="LastItems">
<Grid RightTapped="Grid_RightTapped">
<FlyoutBase.AttachedFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="Item1"/>
<MenuFlyoutItem Text="Item2"/>
<MenuFlyoutItem Text="Item3"/>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
<TextBlock Text="{Binding ''}" Padding="10" Margin="10,0" />
</Grid>
</DataTemplate>
然后Grid_RightTapped
方法如下。
private void Grid_RightTapped(object sender, RightTappedRoutedEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
if (element != null) FlyoutBase.ShowAttachedFlyout(element);
}
执行此操作时,当我右键单击非移动设备并对移动设备上的项目进行LongPress时,弹出窗口显示没有问题。
答案 1 :(得分:0)
有一份关于"Narrator"的官方文件。当我们用一根手指双击,或用一根手指按住并用一秒钟敲击时,它将激活主要动作。这意味着我们在没有&#34;讲述者的情况下点击该项目一次&#34;。所以DoubleTapped
事件永远不会被解雇。
当我们用两根手指双击时,它将显示选择控件的上下文菜单。我们应该能够将RightTapped
添加到GridView
。当我们用两根手指双击时,RightTapped
将被触发。
似乎我们无法在&#34;讲述人中选择GridViewItem
&#34;模式。如果我们将SelectionChanged
事件添加到GridView,当我们双击GridViewItem
时,SelectionChanged
将永远不会被触发。