2016-05-09 3 views
0

У меня есть концентратор, который настроен на вертикальную ориентацию, которая содержит несколько HubSections. В каждом из этих HubSections есть горизонтальная прокрутка сетки. Пример аналогичного макета см. На главном экране хранилища Windows.UWP Отключить прокрутку мыши в виде сетки

Я хочу, чтобы указатель мыши не перемещал список по горизонтали, а вместо этого продолжал прокрутку по вертикали. У меня есть изображения на месте, похожие на Windows Store, чтобы пользователь мог вручную перемещать вид сетки. Я также хочу включить swiping для перемещения списка, аналогично тому, что делает магазин.

Я попытался получить элемент управления из GridView и переопределить событие PointerWheelChanged, но он никогда не входит в это событие, так как я думаю, что внутренний просмотрщик прокрутки захватывает. Я попытался извлечь из ScrollViewer, но он запечатан и не может быть выполнен.

Я использую ItemsWrapGrid в ItemsPanelTemplate, так что, возможно, есть что-то в том, что они я мог бы переопределить ...

ответ

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.HorizontalScrollMode = "Disabled"? – Archana

+0

Мне нужно было разрешить горизонтальную прокрутку работать на сенсорных экранах. Установка этого параметра для предотвращения помешала этому. –

Смежные вопросы