2016-05-09 160 views
0

UWP禁用鼠標滾動我有被設定爲包含多個HubSections垂直方向的中心。在這些HubSection中的每一個都是一個橫向滾動網格視圖。有關類似佈局的示例,請查看Windows商店的主屏幕。在網格視圖

我想防止鼠標滾動水平移動列表,相反,繼續垂直滾動。我具有與Windows應用商店類似的圖像,以允許用戶手動滑動網格視圖。我也想啓用滑動來移動列表,類似於商店的功能。

我試圖從獲得的GridView控件和重寫PointerWheelChanged事件,但它從來沒有進入那種情況下,我認爲內部滾動瀏覽器接管。我試圖從ScrollViewer派生出來,但它是密封的,不能完成。

我使用的ItemsPanelTemplate一個ItemsWrapGrid,所以可能有內他們我可以覆蓋東西...

回答

0

使用這篇文章作爲一個例子,我能解決這個問題:

Pivot inside a ScrollViewer, scrollviewer wont scroll

使用VisualTreeExtensions,我必須找到和這種方法適用於含有ScrollContentPresenter一個網格。我在網格視圖的OnLoaded事件中執行了此操作。

private void gridView_Loaded(object sender, RoutedEventArgs e) 
    { 
     var gridView = VisualTreeHelper.GetChild(this, 0) as FrameworkElement; 
     var grids = gridView.GetDescendantsOfType<Grid>().ToList(); 
     var oneIWant = grids.Where(x => x.Children.Any(y => y.GetType() == typeof(ScrollContentPresenter))).First(); 

     oneIWant.PointerWheelChanged += ScrollViewer_PointerWheelChanged; 
    } 

不優雅,但它會使現在。我願意接受任何其他可能的選擇。

+0

這沒有幫助ScrollViewer.Horizo​​ntalScrollMode =「已禁用」? – Archana

+0

我需要允許水平滑動才能在觸摸屏上工作。將其設置爲禁用可防止發生這種情況。 –