4

GridView を使用してアイテムのリストを表示しています。マウスのスクロール ホイールを使用して、GridView が含まれているページをスクロールできるようにする必要があります。これは、GridView のテンプレートをオーバーライドすることで簡単に実現できます。

<GridView.Template>
        <ControlTemplate>
            <ItemsPresenter />
        </ControlTemplate>
</GridView.Template>

ただし、タッチ デバイスから項目を選択できるようにする必要もあります。これは通常、項目を下にフリックしてから選択します。上記のテンプレート オーバーライドを適用すると、タッチ選択メカニズムが壊れます。

Blend に入り、以下に示す GridView のデフォルト テンプレートを見始めました。

<ControlTemplate
    TargetType="GridView">
    <Border
        BorderBrush="{TemplateBinding BorderBrush}"
        BorderThickness="{TemplateBinding BorderThickness}"
        Background="{TemplateBinding Background}">
        <ScrollViewer
            x:Name="ScrollViewer"
            BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}"
            HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}"
            HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
            IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}"
            IsHorizontalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsHorizontalScrollChainingEnabled}"
            IsVerticalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsVerticalScrollChainingEnabled}"
            IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}"
            IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}"
            TabNavigation="{TemplateBinding TabNavigation}"
            VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
            VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}"
            ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}">
            <ItemsPresenter
                HeaderTemplate="{TemplateBinding HeaderTemplate}"
                Header="{TemplateBinding Header}"
                HeaderTransitions="{TemplateBinding HeaderTransitions}"
                Padding="{TemplateBinding Padding}" />
        </ScrollViewer>
    </Border>
</ControlTemplate>

ScrollViewer を削除するか、水平スクロール部分を何らかの方法で無効にすると、タッチ選択が機能しなくなります。

マウスのスクロールとタッチ選択を同時に有効にするにはどうすればよいですか?

明確にするために、アクションを同時に行う必要はありません。どちらも、同じ GridView の同じページで個別に作業する必要があります。

4

1 に答える 1