【问题标题】:Double click event for grid view item网格视图项目的双击事件
【发布时间】:2013-10-22 07:29:56
【问题描述】:

双击后有什么方法可以获取网格视图项。我没有在地铁网格视图中找到双击事件。只有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>

【问题讨论】:

  • 展示你的网格或你拥有的东西
  • 没有双击事件吗?
  • @VasileMarianFălămaş 谢谢伙计。

标签: c# xaml windows-8 windows-runtime


【解决方案1】:

使用Tapped(或DoubleTapped)事件的问题是这些事件仅在检测到点击手势时触发。 “嗯,是的。这正是我想要的”,你可能会说。

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

潜在的骇客解决方案

我目前能想到的唯一方法是使用ItemClick 事件来实现您要做的事情。单击GridViewItem 时,启动计时器。下次触发 ItemClick 事件时,请检查是否在合理的时间内(500 毫秒?更少?我相信这很快就可以通过 Google 搜索)。

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

【讨论】:

    【解决方案2】:

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

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

    双击时你想做什么动作?打开项目?这通常通过单击完成。

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

    【讨论】:

    • 如果您希望您的应用在使用鼠标时表现出色,我不推荐 DoubleTapped。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多