Как включить полосу прокрутки / прокрутку на WPF Datagrid

У меня есть DataGrid элемент управления, который находится в Grid контейнере макета, и я не могу заставить работать автопрокрутку на самом DataGrid. Я могу обернуть DataGrid вокруг ScrollViewer и таким образом добавить полосу прокрутки, но автоматическая прокрутка не работает.

Итак, прямо сейчас, когда новые записи добавляются в DataGrid, DataGrid просто расширяется по вертикали. Я бы хотел, чтобы была включена вертикальная полоса прокрутки, позволяющая прокручивать элементы в DataGrid, когда добавляется больше элементов, чем может показать исходный вертикальный размер, вместо того, чтобы расширяться DataGrid целиком. Конечно, должен быть простой способ добиться этого.


person BrianP    schedule 09.08.2010    source источник
comment
Возможный дубликат WPF Datagrid - не отображается полоса прокрутки   -  person DmitryBoyko    schedule 03.11.2017


Ответы (1)


Хорошо, разобрался с этим ... Оказывается, мне в конце концов даже не нужно было оборачивать сетку данных вокруг ScrollViewer. Все, что мне нужно было сделать, это определить высоту сетки данных (используя атрибут «Высота»), и полоса прокрутки сетки данных появится при добавлении элементов, превышающих высоту. Очевидно, когда высота не определена, она является динамической и расширяется по вертикали по мере добавления новых элементов.

Еще одна вещь, которую нужно добавить к этому, заключалась в том, что в моем datagrid у меня были детали строки, определенные для каждой строки, поэтому, когда детали нескольких строк были развернуты, прокрутка была бы включена, но поведение полосы прокрутки было немного дурацким (как это не было плавной прокрутки), и исправление для этого, чтобы сделать ее плавной прокруткой, добавило следующий атрибут datagrid: ScrollViewer.CanContentScroll = "False" (я предполагаю, что элемент управления datagrid является / наследуется от ScrollViewer), а затем прокрутка было гладко и соответствовало нормальному ожидаемому поведению прокрутки.

person BrianP    schedule 10.08.2010
comment
Я бы посоветовал воздержаться от явной установки высоты Datagrid. Вместо этого поместите сетку данных в DockPanel или Grid, и вертикальная прокрутка произойдет автоматически, и ваша сетка данных будет использовать все доступное для нее пространство. - person knockando; 29.09.2011