1

双击后有什么方法可以获取网格视图项。我没有在地铁网格视图中找到双击事件。只有像ItemClick和这样的事件PointerPressed存在。有什么建议吗?

<GridView Name="downloadGrid"
          HorizontalAlignment="Left"
          ItemsSource="{Binding Source={StaticResource CollectionItems}}"
          Grid.Column="0" Grid.Row="2" PointerPressed="downloadGrid_PointerPressed"
          ItemContainerStyle="{StaticResource CustomGridViewItemStyle}" 
          Width="Auto" SelectionChanged="downloadGrid_SelectionChanged">
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapGrid Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid Margin="6" Height="280" Width="200">
                <Grid.RowDefinitions>
                    <RowDefinition Height="120"/>
                    <RowDefinition Height="35"/>
                    <RowDefinition Height="30"/>
                    <RowDefinition Height="30"/>
                    <RowDefinition Height="30"/>
                    <RowDefinition Height="30"/>
                </Grid.RowDefinitions>

                <Image Source="{Binding Path=Thumbnail}" HorizontalAlignment="Left" Grid.Row="0" Stretch="Fill"/>
                <Image Grid.Row="0" Source="{Binding Path=Type, Converter={StaticResource Icon}}" MaxWidth="20" MinWidth="20" VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
                <TextBlock Text="{Binding Path=Caption}" TextWrapping="Wrap" Foreground="#FF017DD5" Grid.Row="1" HorizontalAlignment="Left" FontSize="11" Margin="3,0,0,0" Height="Auto"/>
                <ProgressBar Grid.Row="2" Value="{Binding Path=PercentOfCompletion, Converter={StaticResource ProgressConverter}}" Width="75" Height="11" HorizontalAlignment="Left" VerticalAlignment="Center" FontFamily="Segoe UI" BorderThickness="1" Foreground="#FF78D200" Margin="3,0,0,0">
                    <ProgressBar.BorderBrush>
                        <SolidColorBrush Color="#FF78D200"/>
                    </ProgressBar.BorderBrush>
                </ProgressBar>
                <!--<TextBlock Grid.Row="2" Text="{Binding Path=PercentOfCompletion, Converter={StaticResource ProgressConverter}}" Margin="-15,0,15,0" VerticalAlignment="Center" HorizontalAlignment="Center" FontFamily="Segoe UI" Foreground="#333333" FontSize="12"/>-->
                <TextBlock Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center" Text="{Binding Path=StatusInfo}" Style="{StaticResource MainPageTextStyle}" Margin="0,0,5,0"/>
                <Button x:Name="playNow" Grid.Row="3" Content="Play Now" HorizontalAlignment="Left" VerticalAlignment="Center" Style="{StaticResource DownloadButtonStyle}" Click="playNow_Click" Margin="3,0,0,0" IsEnabled="{Binding IsPlay}"/>
                <Button x:Name="pauseResumeBUtton" Grid.Row="3" Content="Pause" HorizontalAlignment="Right" VerticalAlignment="Center" Style="{StaticResource DownloadButtonStyle}" Click="pauseResumeBUtton_Click" Margin="0,4,3,2" IsEnabled="{Binding IsResume}"/>
                <TextBlock Grid.Row="4" HorizontalAlignment="Left" VerticalAlignment="Center" Text="Size: " Style="{StaticResource MainPageTextStyle}" Margin="5,0,0,0"/>
                <TextBlock Grid.Row="4" HorizontalAlignment="Right" VerticalAlignment="Center" Text="{Binding Path=OriginalFileSize, Converter={StaticResource FileSizeConverter}}" Style="{StaticResource MainPageTextStyle}" Margin="0,9,5,6"/>
                <!--<TextBlock Grid.Row="5" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Output: " Style="{StaticResource MainPageTextStyle}" Margin="5,0,0,0"/>
                <TextBlock Grid.Row="5" HorizontalAlignment="Right" VerticalAlignment="Top" Text="iPhone / iPod" Foreground="#FF017DD5" FontSize="12" Margin="0,2,5,0"/>-->
            </Grid>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>
4

2 回答 2

1

使用(or ) 事件的问题在于,这些事件仅在检测到 Tap 手势时才会触发。“嗯,是的。这正是我想要的”,你可能会说。TappedDoubleTapped

Buuuuuut如果您使用鼠标并单击您的项目并且在您松开手指之前鼠标移动了一点(或很多),那么该事件不会被识别为点击。所以那个事件不会触发。这可能导致用户不理解为什么他的点击没有被识别。这可以轻松且一致地复制。

潜在的黑客解决方案

我目前能想到的唯一方法是使用事件来实现你想做的ItemClick事情。单击a 时GridViewItem,启动计时器。下次ItemClick触发事件时,检查是否在合理的时间内单击了相同的项目(500 毫秒?更少?我敢肯定这是一个快速的谷歌)。

当然,您必须确保注意停止计时器和所有这些事情。

于 2013-10-23T13:13:25.350 回答
0

正如 VasileMarianFălămaş 在对您的问题的评论中所写,您可以使用双击事件。

但是,如果您想在网格项目上双击事件,您应该质疑自己。Windows 8 最好的功能之一是应用程序的运行方式相同。用户不必考虑是否应该双击或只是点击此应用程序。

双击时要执行什么操作?打开项目?这通常通过单击完成。

以下是 Windows 8 应用程序中使用哪些手势的概述:http: //msdn.microsoft.com/en-us/library/windows/apps/hh761498.aspx

于 2013-10-23T11:12:44.960 回答