在讲述人处于活动状态时在gridview项目上显示flyoutmenu

时间:2017-02-08 13:13:22

标签: c# xaml uwp contextmenu accessibility

我想在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">

与我尝试的第一件事相同......

开发人员如此难以制造,真是太遗憾了 他的应用程序可访问

2 个答案:

答案 0 :(得分:0)

我刚在DataTemplate

内创建了一个MenyFlyout示例应用
<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将永远不会被触发。