DataGrid-подобное поведение прокрутки - PullRequest
0 голосов
/ 28 декабря 2011

Мне нужно реализовать управление с заголовком и панелью элементов.Этот элемент управления должен иметь режим прокрутки, аналогичный DataGrid.Заголовок должен прокручиваться горизонтально вместе с элементами, но должен быть зафиксирован при вертикальной прокрутке.Как мне реализовать такое поведение?

1 Ответ

2 голосов
/ 28 декабря 2011

Я бы использовал два ScrollViewer, а не один

Вот макет элемента управления, который я бы использовал

<DockPanel>
    <ScrollViewer x:Name="HeaderScrollViewer" DockPanel.Dock="Top">
        <Grid x:Name="Headers" />
    </ScrollViewer>
    <ScrollViewer x:Name="ContentScrollViewer">
        <Grid x:Name="Content" />
    </ScrollViewer>
</DockPanel>

Есть несколько вещей, которые нужно отметить, чтобы эта работа работала правильно.

  • Скрыть полосы прокрутки на HeaderScrollViewer.ScrollViewer предназначен только для функциональности - пользователь фактически не будет с ним взаимодействовать.

  • Когда ContentScrollViewer прокручивается горизонтально, вручную прокрутите HeaderScrollViewer на такое же расстояние.

  • Используйте Grid.IsSharedSizeScope и Grid.SharedSizeGroup , чтобы выровнять столбцы сетки заголовка с вашим содержимым.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...