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

(または) イベントを使用する際の問題は、これらのイベントがタップ ジェスチャを検出した場合にのみ発生することです。「そうですね。それがまさに私が欲しいものです」とあなたは言うかもしれません。TappedDoubleTapped

しかし、マウスを使用していてアイテムをクリックし、指を離す前にマウスが少し (または大きく) 移動した場合、そのイベントはタップとして認識されません。そのため、そのイベントは発生しません。これにより、ユーザーは自分のクリックが認識されない理由を理解できなくなる可能性があります。これは、簡単かつ一貫して再現できます。

潜在的なハッキー ソリューション

あなたがすることを実装するために私が現在考えることができる唯一の方法は、ItemClickイベントを使用することです。GridViewItemをクリックすると、タイマーが開始されます。次回ItemClickイベントが発生したときに、同じアイテムが妥当な時間内にクリックされたかどうかを確認します (500 ミリ秒? それより短い? これは Google ですばやく検索できると確信しています)。

もちろん、タイマーやその他すべてを停止するように注意する必要があります。

于 2013-10-23T13:13:25.350 に答える