2016-05-09 274 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

我需要允许水平滑动才能在触摸屏上工作。将其设置为禁用可防止发生这种情况。 –