我正在使用GridView來顯示項目列表。我需要能夠使用鼠標滾輪在包含GridView的頁面中滾動。這是很容易實現通過重寫的GridView控件啓用鼠標滾動,同時保持觸摸選擇項目的能力
<GridView.Template>
<ControlTemplate>
<ItemsPresenter />
</ControlTemplate>
</GridView.Template>
模板不過,我還需要的項目可選擇從觸摸設備。這通常通過向下輕彈一個項目完成,然後選擇它。在應用上述模板覆蓋之後,觸摸選擇機制中斷。
我走進混合,並開始尋找爲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的同一頁面上單獨工作。
你可能會因爲改變控制模板而錯誤地改變方向。以下鏈接是否可解決您正在嘗試執行的操作? http://stackoverflow.com/questions/13470083/listview-item-selection-windows-store/13475061#13475061 –
不,看來水平滾動和觸摸拖動選擇目前是互斥的。 –
對不起,我沒有用鼠標來測試這個(在路上)。現在我知道了。我可以使用滾輪滾動並使用上面鏈接中的設置拖動選中網格。任何你使用VS模擬器進行測試的機會?如果是這樣,你必須先在模擬器內點擊你的應用程序,然後才能註冊滾輪。在模擬器之外,您不必這樣做。 –