Страницы

Поиск по вопросам

понедельник, 2 марта 2020 г.

Прокрутка ScrollBar'a по одному элементу ItemsControl'a

#c_sharp #wpf


Имеется ScrollViewer, внутри которого лежит ItemsControl:


        
            
                
                    
                
            
        
    


Возник вопрос как прокручивать скролл по одному итему при помощи мыши и кнопок на
клавиатуре?

Появилась область внизу списка(


    


Ответы

Ответ 1



Ваш ItemsControl лежит внутри ScrollViewer и выглядит для него как одно целое, для того, чтобы ScrollViewer мог различать отдельные элементы внутри ItemsControl, он должен сам лежать внутри него. Это можно сделать, изменив шаблон: Обратите внимание, на свойство CanContentScroll="True" - именно оно заставляет ScrollViewer скролить содержимое "поштучно". Кстати, например, ListBox уже имеет в своем шаблоне ScrollViewer, поэтому ему править шаблон не придется, достаточно будет установить свойство ScrollViewer.CanContentScroll="True" Количество элементов, которое прокручивается колесиком мыши зависит от настроек системы: Чтобы сделать поштучную прокрутку колесиком мыши, можно воспользоваться этим ответом: private void OnPreviewMouseWheel(object sender, MouseWheelEventArgs e) { var scrollViewer = (ScrollViewer)sender; int p = e.Delta > 0 ? 1 : -1; scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset - p); e.Handled = true; }

Комментариев нет:

Отправить комментарий